2017-07-21 162 views
0

我有這樣的代碼:JavaScript警告for循環不工作

var txt = document.getElementsByClassName('rich-table-row'); 

document.getElementById("suma").onclick = function suma(){ 

    var calcule = 0; 

    for(var i = 1; i < txt.length; i++) { 

    calcule += Number(((txt[i].getElementsByClassName('rich-table-cell')[2].getElementsByTagName('span')[0].innerText).substring(2)).replace(',','')); 

    } 

alert('test'); 

}; 

後的循環結束,警報沒有顯示。我做錯了什麼? 謝謝

+2

你確定你的for循環正在執行,甚至是控制進入'suma'函數嗎?你可以在輸入函數suma時通過'console.log();'知道。 另請檢查您的控制檯。 –

+2

控制檯中可能有一個javascript錯誤等着你。 – James

+1

什麼都沒有。檢查您的瀏覽器控制檯是否存在拼寫錯誤...順便說一下,數組基於零 –

回答

0

正如@詹姆斯提到的,如果您試圖刪除多個逗號,則需要使用定義爲全局的正則表達式。但是,就像他所說的那樣,這不應該阻止功能繼續(僅導致calculeNaN)。

沒有標記很難說出什麼問題,但我懷疑是你的代碼中有一個ReferenceError,這可能與你正在解析的標記有關(可能不會返回單元格或跨度)。

我重構了你的函數,包括改變你的電話replace()使用RegExp並添加了假定的標記;它按預期工作:

JS:

var rows = document.getElementsByClassName('rich-table-row'); 

document.getElementById('suma').onclick = function() { 
    var calcule = 0; 
    var cell, span, text; 

    for(var i = 1; i < rows.length; i++) { 
     cell = rows[i].getElementsByClassName('rich-table-cell')[2]; 
     span = cell.getElementsByTagName('span')[0]; 
     text = span.innerText.substring(2).replace(/[,]/g,''); 
     calcule += Number(text); 
    } 

    alert(calcule); 
}; 

HTML

<div class="rich-table"> 
    <div class="rich-table-row"> 
    <div class="rich-table-cell"></div> 
    <div class="rich-table-cell"></div> 
    <div class="rich-table-cell"> 
     <span>AB697,871,184</span> 
    </div> 
    </div> 
    <div class="rich-table-row"> 
    <div class="rich-table-cell"></div> 
    <div class="rich-table-cell"></div> 
    <div class="rich-table-cell"> 
     <span>AB697,871,185</span> 
    </div> 
    </div> 
</div> 

<button id="suma">SUMA</button> 
+0

我在控制檯中得到這個:TypeError:txt [i] .getElementsByClassName(...)[2]未定義 – PickOne

+0

這意味着您的標記結構不支持您正在創建的JavaScript引用。 (也就是說,在至少一個「rich-table-row」引用中沒有第三個「rich-table-cell」實例)。你能編輯你的文章以包含標記嗎? –

0

我認爲我管理如何解決這個問題?

因爲從控制檯上的錯誤,如果(typeof(txt [i] .getElementsByClassName('rich-table-cell')[2])!='undefined'),我插入了一個IF,如下所示:

我認爲這個錯誤是因爲在循環結束的某個地方,我弄不明白