簡體   English   中英

HTML 中的按鈕未執行 onclick function

[英]Buttons in HTML not executing onclick function

創建按鈕后,它們在單擊它們時不會做出反應,就像 onclick 屬性中指定的onclick未定義或屬性根本不存在一樣

我試過了:

  1. 在控制台中手動測試功能
  2. 使用不同的瀏覽器(我測試過:Edge、Chrome、Brave、Firefox、Opera、Tor)
  3. 以其他方式定義function
  4. 使用<button>而不是<input type="button>"

我希望 function 在每次按下按鈕后都能正確執行,因此button.value會發生變化

我得到了什么:

  1. Function 有效,所以它是不執行它的按鈕
  2. 兼容性/瀏覽器沒有問題
  3. Function 被正確定義,無論它是如何定義的,它在控制台中都能正常工作
  4. 出於某種原因按鈕刷新了所有頁面而不是執行 function
<form id="game" style="display:none;">
    <input type="button" class="but" id="but0" onclick="click(0)">
    <input type="button" class="but" id="but1" onclick="click(1)">
    <input type="button" class="but" id="but2" onclick="click(2)">
    <input type="button" class="but" id="but3" onclick="click(3)">
    <input type="button" class="but" id="but4" onclick="click(4)">
    <input type="button" class="but" id="but5" onclick="click(5)">
    <input type="button" class="but" id="but6" onclick="click(6)">     
    <input type="button" class="but" id="but7" onclick="click(7)">
    <input type="button" class="but" id="but8" onclick="click(8)">
</form>
function click(but) {
    switch (but) {
        case 0:
            if (v0 != undefined) { return v0 }
            v0 = rnd;
            document.getElementById(`but0`).value = rnd;
            break;
        case 1:
            if (v1 != undefined) { return v1 }
            v1 = rnd;
            document.getElementById(`but1`).value = rnd;
            break;
        case 2:
            if (v2 != undefined) { return v2 }
            v2 = rnd;
            document.getElementById(`but2`).value = rnd;
            break;
        case 3:
            if (v3 != undefined) { return v3 }
            v3 = rnd;
            document.getElementById(`but3`).value = rnd;
            break;
        case 4:
            if (v4 != undefined) { return v4 }
            v4 = rnd;
            document.getElementById(`but4`).value = rnd;
            break;
        case 5:
            if (v5 != undefined) { return v5 }
            v5 = rnd;
            document.getElementById(`but5`).value = rnd;
            break;
        case 6:
            if (v6 != undefined) { return v6 }
            v6 = rnd;
            document.getElementById(`but6`).value = rnd;
            break;
        case 7:
            if (v7 != undefined) { return v7 }
            v7 = rnd;
            document.getElementById(`but7`).value = rnd;
            break;
        case 8:
            if (v8 != undefined) { return v8 }
            v8 = rnd;
            document.getElementById(`but8`).value = rnd;
            break;
    }
    update()
    if (rnd == '❌') {
        rnd = '⭕'
        return '❌'
    }
    else {
        rnd = '❌'
        return '⭕'
    }
}

答案有點傻,但是你的按鈕什么都不做的原因是因為click是在元素的上下文中保留的。 試一試,設置onclick="console.log(click)" ,您會看到它顯示帶有本機代碼的 function。 要解決您的問題,請將您的 function click重命名為其他名稱,例如myClick ,然后碰撞就會消失。

編輯:

看看 function 'click' 真正調用的是這個

嘗試使用大寫“C”的 onClick。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM