我正在構建一個簡單的計數器來練習JS中的閉包,而且我似乎無法越過這個錯誤。在我看來,將變量elem設置爲canv的id應該可行,但顯然不能連接。我在這裏做錯了什麼?爲什麼我得到「無法讀取html undefined的屬性」?
我的HTML:
<body>
<div id="canv">
</div>
</body>
我的JS:
function setup(delay) {
var el = document.getElementById('canv');
counterFn(el, delay);
}
function counterFn(el, delay) {
var counter = 0;
setInterval(getTime, delay);
function getTime(el) {
el.innerHTML(counter);
counter++;
}
}
setup(500);
這一切都讓人感覺很基本的,但我似乎無法找出什麼我做錯了。
這是一個JS小提琴。 https://jsfiddle.net/8sjaqdrh/2/
您的JavaScript何時運行?它可能試圖訪問你的畫布,然後它存在於DOM中,因此'document.getElementById('canv')'會給出'undefined'。儘管如此,當你調用getTime時,你並沒有給出本地'el'的值,所以在這種情況下它也不會被定義。您需要解決這兩個問題才能使其發揮作用。 –
@PatrickBarr哎呀我沒有意識到這一點。但是我從innerHTML開始,這是一個確切的錯誤。 (儘管更新我的帖子) – crescentfresh
'getTime'需要一個參數,但它永遠不會被傳遞。參數列表中的'el'使其成爲'getTime'的局部變量,外部作用域中的'e'被映射。 Aand'innerHTML'不是一個函數。 – Teemu