2015-12-11 2 views
0

Итак, я пишу пользовательский указатель для веб-сайта, и я сталкиваюсь с этой ошибкой Uncaught TypeError: is not a function Это не происходит в Firefox, но это происходит в Chrome. Я провел последнюю отладку часа без успеха.Uncaught TypeError: не является функцией в Chrome

Ниже я предоставил соответствующие фрагменты, чтобы воспроизвести ошибку в хроме. Предполагается, что скрипт найдет кнопку, содержащую текст «Загрузить» и вернет href.

function getSubmissionSource(){ 
 
    var controlBar = document.getElementsByClassName("button submission rounded"); 
 
    for (var button of controlBar) { //errors here 
 
    var link = button.getElementsByTagName("a")[0]; 
 
    if (link !== undefined && link.textContent == "Download") { 
 
     return link.href; 
 
    } 
 
    } 
 
} 
 
console.log(getSubmissionSource());
<div id="test""> 
 
    <span class="button submission rounded"> 
 
    <a href="/view/18251152/" class="prev dotted">Older</a> 
 
    </span> 
 
    <span class="button submission rounded"> 
 
    <a href="">-Remove from Favorites</a> 
 
    </span> 
 
    <span class="button submission rounded"> 
 
    <a href="">Download</a> 
 
    </span> 
 
    <span class="button submission rounded"> 
 
    <a href="">Note user</a></span> 
 
    <span class="button submission rounded"> 
 
    <a href="/view/18385008/">Newer</a> 
 
    </span> 
 
</div>

+0

Вы пробовали изменения 'для (вар button' на' для (btn'? – Justinas

ответ

3

Вы должны использовать for цикл для перебора nodelist

function getSubmissionSource(){ 
 
    var controlBar = document.getElementsByClassName("button submission rounded"); 
 
    for (var i=0,iLen=controlBar.length;i<iLen; i++) { //errors here 
 
    var link = controlBar[i].getElementsByTagName("a")[0]; 
 
    if (link !== undefined && link.textContent == "Download") { 
 
     return link.href; 
 
    } 
 
    } 
 
} 
 
console.log(getSubmissionSource());
<div id="test""> 
 
    <span class="button submission rounded"> 
 
    <a href="/view/18251152/" class="prev dotted">Older</a> 
 
    </span> 
 
    <span class="button submission rounded"> 
 
    <a href="">-Remove from Favorites</a> 
 
    </span> 
 
    <span class="button submission rounded"> 
 
    <a href="">Download</a> 
 
    </span> 
 
    <span class="button submission rounded"> 
 
    <a href="">Note user</a></span> 
 
    <span class="button submission rounded"> 
 
    <a href="/view/18385008/">Newer</a> 
 
    </span> 
 
</div>

0

Там нет of оператора в JavaScript вы должны изменить

for (var button of controlBar) { 

в

for (var button in controlBar) { 
+0

Хотя довольно новый https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for ... но, по-видимому, он не работает в chrome, как я и думал. – Artex

Смежные вопросы