2011-06-16 81 views
0

過了一段時間我需要你的幫助了;-)。我發現下面的JavaScript 訪問陣列

var global_index = 0; 
var db = [ "10000000", "01000000", "00100000", "00010000", "00001000", "00000100", "00000010", "00000001" ]; 

function loadled() 
{ 
    var byte = db[ global_index ]; 
    if(global_index < 7) global_index++; else global_index = 0; 
    for(var x = 0; x < byte.length; x++) 
    { 
     document.getElementById("id_" + x).src = [ "led_off.gif", "led_on.gif" ][ parseInt(byte[ x ], 10) ]; 
    } 
    window.setTimeout(loadled, 100); 
} 
window.onload = loadled; 

</script></head> 
</html> 

我不明白下面一行:

document.getElementById("id_" + x).src = [ "led_off.gif", "led_on.gif" ][ parseInt(byte[ x ], 10) ]; 

任何人都可以爲此提供一個簡單的解釋或共同書寫的比較?

謝謝。

回答

0
document.getElementById("id_" + x).src = [ "led_off.gif", "led_on.gif" ][ parseInt(byte[ x ], 10) ]; 

的document.getElementById( 「ID_」 + X)

選擇命名id_x html元素(其中x是在代碼中的變量)

的.src

指定要更改上述

[ 「led_off.gif」, 「led_on.gif」] [ parseInt函數選擇html元素的源(byte [x],10)];

根據x的值將渲染爲「led_off.gif」或「led_on.gif」。

parseInt(byte[x],10)試圖將字符串轉換爲數字格式(在這種情況下數字格式基於10),並且要麼是0或1。

所以線將變爲:

( 「[X] ID_」)的document.getElementById。SR​​C = 「led_off.gif」

的document.getElementById( 「ID_ [X]」)。SRC = 「led_on.gif」

取決於x的值。這意味着id = id_x的圖像源將會將源代碼轉換爲另一個gif。

+0

ID爲'id_'+ x的元素被切掉了,因爲我想盡量減少源代碼。螞蟻感謝您的簡單解釋。 – reporter 2011-06-16 09:22:16

3

我相信的是,下面的代碼:parseInt(byte[ x ], 10)將總是返回0或1從而選擇eiter 「led_off.gif」 或 「led_on.gif」 作爲元素x :)

HTH :)

的src
+0

我想'parseInt(byte [x],10)'返回一個十進制數,從二進制文件中解析出來。即使如此,什麼意思'[「led_off.gif」,「led_on.gif」] [0]'?瀏覽器的第二個參數specife是否應該採用? – reporter 2011-06-16 09:04:40

+1

parseInt永遠不能返回小數......整數數據類型沒有浮點數字! ...是[「led_off.gif」,「led_on.gif」]是動態聲明數組的簡短方式。在後面添加[0]表示選擇該數組中的第一個元素。 – 2011-06-16 09:07:08

+0

感謝您的最新評論。這提高了我對數組的理解,所以我將它標記爲很棒的評論。 – reporter 2011-06-16 09:24:53