【问题标题】:unwanted situations after creating button in javascript在javascript中创建按钮后不需要的情况
【发布时间】:2013-07-03 14:29:28
【问题描述】:

我需要使用 javascript 动态创建一个按钮。所以我在“脚本”标签之间写了这些代码。

window.onload = function () {
    var newButton = document.createElement('input');
    newButton.type = 'button';
    newButton.value = 'What's the day today?';
    newButton.id = 'btn1';
    newButton.onclick = myfunction();
    div1.appendChild(newButton);
}
function myfunction() {
    var x = new Date().getDay();
    switch (x) {
        case 0: alert("sunday"); break;
        case 1: alert("monday"); break;
        case 2: alert("tuesday"); break;
        case 3: alert("wednesday"); break;
        case 4: alert("thursday"); break;
        case 5: alert("friday"); break;
        case 6: alert("saturday"); break;

    }
}

页面加载后,“myfunction()”函数会自动运行。之后,当我按下此按钮时,什么也没有发生。我的错误是什么?

【问题讨论】:

  • 您帖子中的颜色编码显示了您的问题。
  • 这无论如何都不会运行,因为你没有逃脱“什么”中的'。对于其他一切,请参阅@Arun P Johny 的解决方案。
  • 好吧,你正在调用newButton.onclick = myfunction();中的函数。
  • 注意:switch 并不是真正需要的:使用简单直接的数组查找。例如alert(["Sunday", ..., "Saturday"][x]);
  • 感谢您所做的一切。我使用了 Arus 的解决方案,它奏效了。

标签: javascript html function button dynamic


【解决方案1】:

你需要改变

newButton.onclick = myfunction;

当您执行newButton.onclick = myfunction(); 时,它会执行myfunction,然后将其返回的值分配给onclick 处理程序,在这种情况下未定义。您需要做的是将函数引用传递给onclick 属性

我还假设以下是复制粘贴更改

newButton.value = 'What's the day today?'; // you need to escape ' with \' or use "What's the day today?"

【讨论】:

    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2021-10-24
    • 2018-01-19
    • 2020-10-21
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多