#javascript #xml
#javascript #xml
Вопрос:
Я пытаюсь перечислить все категории в моем XML-файле и связать их с помощью функции javascript, которая открывает файл xsl.
Я продолжаю получать эту ошибку: Роман не определен. где Novel — категория из XML
Вот мой код.
var root=myxmldoc.getElementsByTagName("CATEGORY");
for (i=0;i<root.length; i) {
var catName=(root[i].childNodes[0].nodeValue);
txt='<a href="#" onClick="javascript:Navigate(' catName ')">' catName '</a>';
document.getElementById("left-sidebar").innerHTML =txt;
}
В приведенном выше коде Navigate (var) — это функция, которая загружает различные файлы .XSL для каждой категории.
Пожалуйста, кто-нибудь может помочь мне понять, почему ошибка продолжает появляться?
Спасибо
Комментарии:
1. Возникает ли ошибка при выполнении приведенного выше кода или при нажатии на ссылку?
2. не по теме, но вы получили бы лучшую производительность, если бы создали txt в виде строки и выполнили
innerHTML
обновление только один раз, вне цикла.3. можете ли вы предоставить XML в этом примере?
4. @David Grayson — ошибка произошла при нажатии на ссылку @Spudley — я попробую это, спасибо за совет 🙂 @pixelbobby — Мне помогли с проблемой. Но если вы все еще хотите это увидеть, я буду рад опубликовать это. Спасибо
5. @Spudley, кажется, я не могу сделать то, что вы предложили. не могли бы вы мне помочь, пожалуйста?
Ответ №1:
Когда вы сгенерируете ссылку, она будет отображаться как:
<a href="#" onClick="javascript:Navigate(Novel)">Novel</a>
Обратите внимание на отсутствие кавычек вокруг Novel
, что означает, что Javascript увидит это как переменную, которая, оказывается, не определена.
Вам нужно вставлять кавычки в вашу генерацию строк следующим образом:
txt='<a href="#" onClick="javascript:Navigate('' catName '')">' catName '</a>';
^^ here ^^ and here
чтобы HTML выглядел как:
<a href="#" onClick="javascript:Navigate('Novel')">Novel</a>
Комментарии:
1. О, хорошо, я понял, большое вам спасибо, и это работает. есть ли причина, по которой она написана как [» catName »], а не как [» catName »]?
2. Потому что вам нужна экранированная кавычка В вашей строке. Если это снаружи, то это просто какая-то случайная цитата, которая использовалась, но больше не болтается и нарушает синтаксис.