有人可以幫我理解爲什麼這不起作用。這裏是我的JS代碼:根據confirm()的結果創建一個新的對象
function Agent(codename, str, acc, spd, int, lock, cqc, stl, lck) {
"use strict";
this.codename = codename;
this.str = str;
this.acc = acc;
this.spd = spd;
this.int = int;
this.lock = lock;
this.cqc = cqc;
this.stl = stl;
this.lck = lck;
this.avg = function() {
return (this.str + this.acc + this.spd + this.int + this.lock + this.cqc + this.stl + this.lck)/8;
};
}
document.getElementById("ace-select").addEventListener("click", function() {
"use strict";
var r = confirm("Are you sure you want Ace?");
if (r === true) {
var ace = new Agent("Ace", 8, 9, 9, 9, 8, 10, 10, 5);
}
}, false);
這裏是我的按鈕HTML:
<button class="btn btn-primary btn-lg btn-border select-color" id="ace-select" type='submit' role="button">Select</button>
當我測試這個在Chrome中,點擊該按鈕會彈出確認()提示的預期,但點擊OK不會按預期創建我的對象。我得到的錯誤:「未捕獲的ReferenceError:王牌沒有定義在:1:1」
如果我把這個完全相同的代碼,並把它放進控制檯然而,它工作得很好。在這種情況下,我粘貼對象的構造函數中原樣,但我離開了EventListener的一部分,只有在粘貼:
var r = confirm("Are you sure you want Ace?");
if (r === true) {
var ace = new Agent("Ace", 8, 9, 9, 9, 8, 10, 10, 5);
}
像以前一樣,確認()框彈出,當我點擊確定,它的計算結果到預期的true
,我的對象被創建。
我在做什麼錯誤,它不會工作,當我有它在事件監聽器內?
如果我應該以完全不同的方式完成此操作,請隨時提供建議。我這樣做的目的是爲了獲得編寫代碼的經驗,並且我完全期望找到需要解決的問題,我很清楚,學習最佳實踐將成爲其中的一部分。 –
我認爲錯誤不在聲明中。你在任何地方打電話給王牌嗎?王牌的範圍僅限於其他地方。 – TypedSource
'ace'的範圍是它所在的'function',**不是** if語句。你可以在if語句後面添加'console.log(ace)'來測試。 – Optimae