Вызов функции из той же функции в Javascript с глобальными переменными - PullRequest
2 голосов
/ 05 сентября 2011

Я делаю домашнюю страницу на основе XML. Создается структура меню, и при нажатии на элемент меню содержимое страницы изменяется. При нажатии на элемент уровня x его дочерний элемент отображается в списке в главном элементе div. Это выполняется функцией changePage (id), которая принимает идентификатор в качестве аргумента для поиска правильного XML-узла для получения информации.

Я хочу, чтобы элементы этого списка были ссылками, и при нажатии на них они должны вызывать функцию changePage. Используется для перехода в дерево.

var root = loadXML(aXML.xml);

function changePage(id){
var current_node = root;  // <-- here I get error when clicking on the a-element.
... // creating list
var aElement = document.createElement('a');
aElement.onclick = new Function("changePage('" + index + "')");
}

Когда я щелкаю по своему пункту меню, все работает, но когда я щелкаю по сгенерированному элементу списка, я получаю ошибку, что "current_node не определен". Кажется, что корневая переменная не может быть найдена при нажатии на дочерний элемент.

Что не так и что я могу сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 16 декабря 2011

Привет из того, что у вас есть, вы убиваете браузер новыми функциями (перезаписываете старую)

Вместо:

 aElement.onclick = new Function("changePage('" + index + "')");

вы можете использовать:

 aElement.onclick = arguments.callee(index);

«arguments» является ключевым словом в js и содержит объект со всеми параметрами, передаваемыми в функцию (т.е. arguments [0]), а также содержит «callee» (сама функция) и «caller» (функция изкоторый называется ).Второй (вызывающий) не является кросс-браузерным.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...