получение неопределенной ошибки в javascript

#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. Потому что вам нужна экранированная кавычка В вашей строке. Если это снаружи, то это просто какая-то случайная цитата, которая использовалась, но больше не болтается и нарушает синтаксис.