2017-08-16 70 views
-1

我無法弄清楚,爲什麼我打了一個電話讓未存儲在一個變量的文檔元素後,我的代碼纔有效。我想儲存一些DOM引用到變量,但除非我,我嘗試存儲的DOM元素上瓶坯的操作我的代碼不會與DOM的互動。然而,我一個DOM元素瓶坯的操作後,我的其他變量將允許與DOM的接口,因爲我原本打算。我將兩個JSFiddles鏈接起來,第一個是帶有錯誤的第一個,第二個帶有創可貼。下面還有突出顯示進行更改的JavaScript代碼。 謝謝。的JavaScript緩存DOM元素奇怪的錯誤

https://jsfiddle.net/spencerduball/sLac9t3y/

https://jsfiddle.net/spencerduball/yyrjazLw/

(function() { 
/* ----- VARIABLES ----- */ 
var score0, score1, current0, current1; 

scoreO = document.getElementById('score-0'); 
score1 = document.getElementById('score-1'); 

current0 = document.getElementById('current-0'); 
current1 = document.getElementById('current-1'); 


/* ----- FUNCTIONS ----- */ 
function reset() { 
    // BANDAID FIX HERE 
    document.getElementById('score-0').textContent = '0'; 
    // END 

    score1.textContent = '0'; 
    current0.textContent = '0'; 
    current1.textContent = '0'; 

}; 
reset(); 

}()); 
+1

看起來你有'scoreO'和'score0',這是不一樣的 –

+0

...這將做到這一點。我一直在尋找這一個小時半,並已重讀大概10個不同的博客,我錯過了。謝謝! – ChillyPenguin672

+0

沒有問題,小事情似乎總是最避忌... :) –

回答

-1

您的變量聲明爲score0

var score0, score1, current0, current1; 

但是你正在分配到scoreO。 (資本 「O」,而不是數字零)。

scoreO = document.getElementById('score-0'); 

一些解決方案是:

  • 不要預先聲明的增值經銷商,因爲你反正做立即指派

    var score0 = document.getElementById('score-0'); 
    // same for the others 
    
  • 使用「嚴格模式」獲取有關未聲明變量賦值的有用錯誤消息

    (function() { 
        "use strict"; 
        /* ----- VARIABLES ----- */ 
    
  • 使用類似ESLintJSHint的短絨。這些會通知你許多不同類型的常見的編程錯誤的,並會爲你節省很多時間,從長遠來看。