2015-07-13 68 views
0

即時通訊JavaScript練習。'變量'變量不能在javascript中工作

和即時嘗試使用數組元素作爲數組名稱在Javascript中。

我searchd的計算器,發現像this

一些鏈接時,即時通訊測試這一點,我發現它不工作,它給undefind當IM調用第二功能。請參閱jsbin link ,也許我錯了,請幫助我。 這裏是我的代碼,並鏈接:https://jsbin.com/yazowutera/

<button onclick="testArrays1(a, [vic.zero, vic.one])">source</button> 
<br> 
<button onclick="testArrays2(a, vic[all[1]])">desti</button> 

和JavaScript

<script> 

var vic = { 

    zero : ["00","01","02"], 

    one : ["10","11","12"], 

    two : ["20","21","22"] 

}; 
var all = ["zero","one","two"]; 

var a = "a"; 


function testArrays1(needle, arrays){ 
    for (var i=0; i<arrays.length; i++) { 
     alert(needle +arrays[i]); 
    } 
} 

function testArrays2(needle, arrays) { 
    //for (var i=0; i<arrays.length; i++) { 
    alert(needle +arrays); 
    //} 
} 

</script> 

我不是在J-查詢現在請ANS在JavaScript

+0

誰我應該標記正確的答案,因爲一切都是正確的答案 – victor

回答

1

看來all是一個特殊變量保留爲HTMLAllCollection和它的第二個元素(即all[1])是一個HTMLHeadElement。這似乎只適用於使用內聯腳本(元素屬性中的腳本)。如果使用正常的腳本塊,似乎必須執行document.all(但這可能是JSFiddle測試的副作用)。

推薦的解決方案是使用不同的變量名稱。例如,變量更改爲test

<button onclick="testArrays2(a, vic[test[1]])">desti</button> 

var test = ["zero","one","two"]; 
+0

我在哪裏可以找到所有這些保留的東西名單,因爲我浪費2個小時尋找這個便宜的解決方案 – victor

+0

我不關心你自己的清單。只要學習如何更好地調試你的問題。一個簡單的'console.log(all)'會告訴你'all'有問題,然後快速搜索就可以得到答案。儘量避免使用內聯腳本,創建一個'腳本'塊並註冊你的按鈕點擊 - 雖然你會想要在文檔準備好(或等效) – musefan

+0

thnx的小費,你有自己的網站或博客或東西在線,你在哪裏發佈有關編程。 – victor

1

「所有」(或「的document.all」)是保留變量,它返回一個HTMLAllCollection。將你的變量名稱改爲你的javascript中的其他名稱,它將起作用。

0

正如他人提到所有是一個保留關鍵字。但是如果你仍然想使用它,你可以使用如下。哪個有效!

切記:在JavaScript編碼中始終使用保留關鍵字作爲變量是一種不好的做法。所以不要使用那些保留字。

你的JavaScript:

window.all = ["zero","one","two"]; 

你的HTML:

<button onclick="testArrays2(a, window.all[1])">desti</button> 
+0

我在哪裏可以找到所有保留的關鍵字列表供將來使用 – victor

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript – Nirus