2011-09-29 86 views
1

由於缺乏更好的描述,在理解我將稱爲變量範圍問題時存在一個問題。在JavaScript中傳遞數據

假設我有一個有兩個功能的頁面,one()two()。第一個函數有一個局部範圍的變量x及其中的一個對象。此函數在DOM中構建一個元素,該元素包含一個onClick,它調用第二個函數,並且需要將x作爲參數傳遞給第二個函數。即第二個函數需要訪問作用於第一個函數的數據。

我曾嘗試:

<something onClick="two(x);"> 

但這似乎並沒有工作。我知道有一種方法可以使x全球化,但我發現在其他語言中,全局範圍的變量不鼓勵危險。

+1

告訴我coooooooode! – jbabey

+1

如果您發佈了一些代碼,我們可以提出建議。在定義函數之前,可以將var x ='something'直接放入

1

使用函數中的全局變量不一定是壞事,但它被認爲是不好的做法,把變量窗口範圍,這是假設如果你不把你的變量包裝在函數或對象中。

考慮這個例子:

(function() { 
    var x = 1; 
    function callback() { 
    alert(x); 
    } 
    function bind() { 
    x++; 
    elem.onclick = callback; 
    } 
}()); 
0

您應該variable scope閱讀起來。

功能結束one()有權訪問x。但由於它存在於one()而不是其他功能以外的其他功能將無法訪問它。因此,您將two(x);放入您的onClick,它將嘗試將x解析爲全局範圍。並且沒有全球化x

您可以通過全球化x輕鬆解決此問題。只需在您的功能旁邊放置var x即可。

0

使X Global公司宣稱它的方法之外

var x = 0 

function one() 

x=1 

function two() 

print x 

x將打印1

+0

你錯過了一些花括號('{}'和分號(';')。另外,javascript中沒有'print'函數(除了涉及物理打印機)。最後,OP知道''有一個方法使x全球',但不想這樣做,有充分的理由。 – someone

+0

這比任何東西都更模糊,他想知道如何在方法之間交換數據,這可行,我可能不會得分,但知識在那裏 –