我正在嘗試從 更改inputX[0]為false,true然后在有效時收到警報。不幸的是,我沒有收到inputX[0]設定為true. 你有什么想法?
<body>
<div>
<button id="S1" onclick="btnManager(this);"></button>
</div>
<script>
var inputX = new Array();
definedInputs();
btnManager();
question();
function definedInputs() {
inputX[0] = false;
}
function btnManager(pressedBtn) {
if (pressedBtn.id == (id = "S1")) {
inputX[0] = true;
}
}
function question() {
if (inputX[0] == true) {
alert("inputX is set to true");
}
}
</script>
</body>
uj5u.com熱心網友回復:
試試這個:
<body>
<div>
<button id="S1" onclick="btnManager(this);"></button>
</div>
<script>
var inputX = new Array();
inputX[0] = false;
function btnManager(pressedBtn) {
inputX[0] = !inputX[0];
alert(inputX[0]);
}
</script>
</body>
有了這個,每次你按下按鈕,值都會被當前值的否定設定,希望它有幫助。
uj5u.com熱心網友回復:
了解 Js 生命周期很重要。首先構建 javascript 物件和函式,然后執行代碼,在這種情況下,它發生如下:
- 陣列“inputX”被創建
- 使用函式“definedInputs()”定義了“inputX[0] = false”
- “btnManager()”被執行,但由于它沒有分配引數,“pressedBtn.id”的值是“undefined”,所以“inputX[0]”的狀態不會改變
- 使用“question()”查詢“inputX[0]”的狀態,但由于“inputX[0]”仍然為假,因此不會觸發任何警報。
所有這一切都發生在您按下按鈕之前。按下按鈕執行“btnManager(this)”,由于 id 等于“S1”,“inputX[0]”的狀態變為 true。
但是你看不到這個變化,因為“question()”函式已經被執行了。
嘗試:
<!DOCTYPE html>
<html>
<body>
<div>
<button id="S1" onclick="btnManager(this);">Test</button>
</div>
<script>
var inputX = new Array();
definedInputs();
function definedInputs() {
inputX[0] = false;
}
function btnManager(pressedBtn) {
if (pressedBtn.id == "S1") {
inputX[0] = true;
}
question();
}
function question() {
if (inputX[0] == true) {
alert("inputX is set to true");
}
}
</script>
</body>
</html>
uj5u.com熱心網友回復:
添加一些控制臺日志以查看發生了什么。如果你這樣做了,你會看到你的所有函式都在立即執行。當您單擊按鈕并輸入btnManager()功能時,接下來會發生什么?正如您將看到的,您的代碼正在執行該btnManager()函式,但是如何檢查您的警報呢?
如果您question()在 if 陳述句之后呼叫,那么您將再次運行您的檢查。
您可以用更少的行數來做到這一點,但為了保持您的準確代碼并使其作業,這就是您實作目標的方式:
<body>
<div>
<button id="S1" onclick="btnManager(this);"></button>
</div>
<script>
var inputX = new Array();
// You could really remove these and do it like Lucretius's Answer
definedInputs();
btnManager();
question();
function definedInputs() {
inputX[0] = false;
}
function btnManager(pressedBtn) {
if (pressedBtn.id == (id = "S1")) {
inputX[0] = true;
}
question();
}
function question() {
if (inputX[0] == true) {
alert("inputX is set to true");
}
}
</script>
</body>
uj5u.com熱心網友回復:
您將pressedBtn.id文本字串的值與S1true/false 布爾評估進行比較,該評估(id == "S1")始終為 false,因為文本字串和布林值不相同。因為(id = "S1")是一個作業,你不能比較一個作業,這就是我猜你正在嘗試做的事情。
'S1' == true永遠是假的'S1' == false也將永遠是錯誤的。
代替:
function btnManager(pressedBtn) {
if (pressedBtn.id == (id == "S1")) {
inputX[0] = true;
}
}
只需評估 id,然后將其記錄到控制臺以確保輸入陣列已更新。
function btnManager(pressedBtn) {
if (pressedBtn.id === "S1" ) { //true when button id = "S1"
inputX[0] = true;
console.log( inputX ); //expected array output "[true]"
console.log( ('S1' == false) ); //always false
console.log( ('S1' == true) ); //always false
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/490695.html
標籤:javascript
上一篇:基于輸入型別的函式回傳型別
下一篇:列出給定月份的每個日期
