2015-12-11 43 views
0

因此,我正在爲網站編寫一個userscript,並且遇到此錯誤Uncaught TypeError: is not a function它不會在Firefox中發生,但會在Chrome中發生。我花了最後一個小時調試沒有成功。Uncaught TypeError:不是Chrome中的功能

我已經提供了下面的相關代碼片段來重現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

你試圖改變'爲(VAR 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 ...但顯然它不像鉻想象的那樣工作。 – Artex

相關問題