Я передаю некоторые функции элемент, используя ключевое слово "this" и метод "call" - PullRequest
0 голосов
/ 22 марта 2012

Я пытаюсь передать функции определенный элемент, который я пытаюсь представить с помощью ключевого слова this.Проблема в том, что он должен выполнять две функции, и я не понимаю, где ошибка.Все начинается с 3-й функции, которая затем вызывает 2-ю функцию, передавая document.body как то, что будет считаться «этим» функции.Затем вторая функция передает «this» 1-й функции с помощью метода «call».

function create_tag(tag, inner) {
    element = document.createElement(tag);
    if (inner) {
        element.innerHTML = inner;
    }
    this.appendChild(element);
    return element;
}

function create_input(label_value) {
    input = create_tag.call(this, "input");
    label = create_tag.call(this, "label", label_value);
    input.setAttribute("id", "pers_" + label_value);
    return input;
}

function crea_personaggio() {
    input_values = ["Name", "Lastname", "Nickname", "Age"];
    for (i = 0; i < input_values.length; i++) {
        create_input.call("document.body", input_values[i]);
    }
}

1 Ответ

5 голосов
/ 22 марта 2012

.call() требует, чтобы объект был передан в качестве первого аргумента, вместо этого вы передаете строку, которая определенно здесь не будет работать (хотя технически она будет работать).

Просто зайдите на

create_input.call(document.body, input_values[i]);

Кроме того, вы опускаете ключевое слово var для любого объявления переменной, которое в конечном итоге окажется в порции глобальных переменных (это может быть не проблемой, но это очень плохая карма).

...