2011-09-08 84 views
4

我試着在stackoverflow上尋找,但不能找到與我一樣的問題 - 我確定這個問題很容易解決,但不知何故......它不工作。變量賦值getElementById,不工作

我有一些輸入,這將在計算器格式中添加/乘/減/除等。 我想要的是通過在我的功能塊之外聲明變量(我不想要任何花哨的multiple-getElementById賦值)來刪除對getElementById不必要的引用。

我的JavaScript低於:

//Declarations: designed to minimze calls to document.getElementByID 
    var number1 = document.getElementById("num1"); 
    var number2 = document.getElementById("num2"); 
    var numAnswer = document.getElementById("answer"); 

    //Add together two numbers 
    function add() 
    { 
     numAnswer.value = parseFloat(number1.value) + parseFloat(number2.value); 
    } 

它的駕駛我瘋狂 - 如果我拿出的變量,只需使用普通的舊document.getElementById,一切正常。這應該很容易,但它不工作。我檢查過拼寫,這一切似乎都沒問題 - 我有什麼遺漏?

+0

很確定這是關於示波器。 –

+0

我需要變量爲全局變量,因爲我必須使用其他函數......我在家裏的小小的JavaScript書確保了我的工作。 MDN也表示它也應該這樣做。 :( – Singular1ty

回答

5

只要您的問題中顯示的腳本出現之後頁面源代碼中的元素出現,就可以工作。否則,瀏覽器尚未解析這些元素,因此無法通過ID找到它們。

的另一種方式得到它的工作是做任務在onload或文檔準備處理程序,因爲時間onload或文檔就緒時所有元素都可以訪問無論身在何處,他們都在頁面資源。

+0

等等......之後...?這個腳本在標題中 - 我認爲那沒關係? – Singular1ty

+0

你只想在DOM被加載後纔會進行DOM操作 - 即window.onload = function (){... stuff ...}; – kinakuta

+0

@kinakuta,如果我使用'window.onload',不需要函數嗎?如果我在函數中聲明變量,那麼它們只是本地的,對嗎?當窗口加載時,有沒有辦法迫使javascript'

0

你的代碼工作得很好,因爲你已經將它包含在你的問題中。你可以在這裏看到:http://jsfiddle.net/jfriend00/kXrDF/

這是什麼意思是你還沒有在你的問題中包含其他錯誤。也許你可以包含更多的代碼,這樣我們可以幫助你找到其他可能的原因。

要測試「全局」變量的範圍,可以在add()函數中設置一個斷點,並檢查number1,number2和numAnswer的值。如果你還沒有想出如何設置斷點和檢查變量,我強烈建議這樣做。如果還是不行,那麼你可以把臨時測試分爲這樣你的add()代碼來縮小東西的問題是:

if (!number1) alert("number1 is not valid"); 
if (!number2) alert("number2 is not valid"); 
if (!numAnswer) alert("numAnswer is not valid"); 

另一種可能是你的代碼頁之前太早運行已被加載,在這種情況下,初始代碼無法找到DOM元素,因爲它們還不存在。爲防止出現問題,您需要確保代碼在加載頁面之後才能運行。您可以通過將代碼放置在頁面元素之後,或者使用各種技術之一來檢測頁面何時加載,以及是否運行代碼來初始化全局變量。像jQuery和YUI這樣的框架都內置了幫助你在頁面加載後運行代碼的函數。

+0

感謝您的幫助 - 我通過向下移動'

  • 11. JavaScript中的getelementbyid變量不起作用
  • 12. JavaScript getelementbyid不工作,因爲ID改變
  • 13. Makefile變量賦值:'include'不允許作爲變量嗎?
  • 14. Jquery:變量賦值
  • 15. JavaScript變量賦值
  • 16. 爲變量賦值
  • 17. Python變量賦值
  • 18. CSS變量賦值
  • 19. XSL變量賦值
  • 20. OdiOSCommand變量賦值
  • 21. C#變量賦值
  • 22. 賦值給變量?
  • 23. Golang變量賦值
  • 24. PHP變量賦值
  • 25. JavaScript變量賦值?
  • 26. Powershell數組賦值賦值變量,而不是值?
  • 27. 變量賦值輸入值
  • 28. 打印變量賦值作爲輸出
  • 29. 鏈接變量賦值如何在SQL中工作?
  • 30. 爲什麼變量賦值在列表中像這樣工作?