2014-02-06 46 views
0

我有一個名爲「num」的x-y表,我試圖遍歷表並獲取單元格中的數值。警報不斷顯示我「未定義」,我不知道爲什麼。我試過了innerHTML函數,但它並沒有給我我需要的值。任何幫助將不勝感激(我是新來的Javascript)。Javascript Table Iteration

var x=0; 
var y=0; 
var table=document.getElementById("num"); 

    for (var r = 1, n = table.rows.length; r < n; r++) { 

     x= table.rows[r].cells[0].value; 
     y= table.rows[r].cells[1].value; 
     alert(x); 

    } 
+0

table.rows [r] .cells [0] .innerHTML的工作方式,請參閱http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_table_cells_index – maciekm

回答

0

你會想的.innerText代替innerHTML

.value是表單元素輸入等。

+0

我不清楚;該表具有類型「數字」的輸入框。當我將其更改爲innerText時,警報中沒有任何內容出現 – user3216573

+0

'.value'僅適用於輸入(和表單元素),而不適用於其他dom元素。如果你使用輸入,你需要'.value',但你需要找到輸入,而不是'td'元素 – helion3

1
> x= table.rows[r].cells[0].value 

表細胞(td和th元素)不具有默認值屬性。如果您希望獲取DOM元素的文本內容,則可以使用W3C textContent屬性或IE innerText屬性,具體取決於主機支持哪一個屬性。瀏覽器支持一種或另一種,一些雙方,所以你可以做:

var cell; 
... 
cell = table.rows[r].cells[0]; 
x = cell.textContent || cell.innerText; 

你也可以寫一個小功能做的工作:

function getText(el) { 
    if (typeof el.textContent == 'string') { 
    return el.textContent; 
    } else if (typeof el.innerText == 'string') { 
    return el.innerText; 
    } 
} 

然後,你可以這樣做:

x = getText(table.rows[r].cells[0]); 

請注意,x的值將是一個字符串,因此如果打算使用+運算符進行加法,請小心。