проблема зацикливания javascript - PullRequest
0 голосов
/ 04 февраля 2011
<script type="text/javascript">
    function addbutton() {

    var o = document.getElementsByTagName('li');
    for(var i=0;i<o.length;i++) 
    {
     var keyword= o[i].innerHTML;
     var regobj = /<a (.*)>(.*)<(.)a>/g;
     keyword = keyword.replace(new RegExp("<br>", "g")," ");
     keyword = keyword.replace(regobj,"$2");
     keyword = keyword.substring(0,100);
     var str = "<br>"+ "<a class='but' target='blank' ";  
     str += "href=\"http://www.google.com.tr/search?q=";
     str += decodeURIComponent(keyword);
     str += "\">ara</a>";
     o[i].innerHTML = o[i].innerHTML + str;

    }
}
</script> 

addbutton () добавляет кнопку поиска в конец тегов li, но когда я запускаю, она зацикливается только 43 раза.поэтому он добавляет кнопку поиска для первых 43 тегов li.что вы думаете, почему цикл прерывается?

edit: больше информации,

- я попробовал функцию на странице, содержащей 131 тег li.и функция работает для первого тега 43 li,

- я пробовал и для Google Chrome, и для Firefox, результаты одинаковы.

Я пытался предупредить (o.length).нет проблем, он возвращает истинное число, «131».

1 Ответ

1 голос
/ 04 февраля 2011

Ну, в этой строке определенно есть ошибка:

str += decodeURIComponent(keyword);

Это должно быть

str += encodeURIComponent(keyword);

Это может быть проблемой, decodeURIComponent может взорвать некоторый вводимый текст, потому что вы используете его в строках, которые не кодируются URL.

За исключением этого:

Вам нужно будет посмотреть фактический текст в элементах li, когда они обрабатываются. Это явно не просто цифры, код отлично работает в Chrome.

Я рекомендую использовать инструменты разработчика Chrome (Shift + Ctrl + I), чтобы установить точку останова в функции и просмотреть ее с фактическими данными теста. Или используйте дополнение Firebug для Firefox, чтобы сделать то же самое.

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