【问题标题】:Trouble changing a function in javascript using ie11使用 ie11 更改 javascript 中的函数时遇到问题
【发布时间】:2016-08-03 11:14:59
【问题描述】:

我正在使用以下代码更改按钮元素中的功能。

html:

 <input id="btnCall" type="button" value="Next Call"  onclick="Call();"/>

最初 btnCall 将运行 Call() 函数。在某些情况下,我将使用以下代码更改 btnCall 中的函数。 js:

document.getElementById("btnCall").onclick = function() {txCall();};
ChgText("btnCall", "Transfer Call");

我在windows 7中使用ie11,上面的javascript函数有时可以工作有时不能工作。有人知道为什么吗?或者有没有更好的方法来改变一个可以在 ie 中工作的按钮 onclick 功能?

【问题讨论】:

  • 更好的方法是不使用内联 html onclick 属性,而只根据需要使用 document.getElementById("btnCall").onclick = Calldocument.getElementById("btnCall").onclick = txCall。或者将 onclick 绑定到第三个函数,该函数有一些逻辑来决定是调用Call() 还是txCall()。 (顺便问一下,您提到的 IE 是否意味着它可以在其他浏览器中运行?)
  • 您确定正在执行更改 btnCall 功能的代码,并且它是在定义元素后执行的吗?
  • Jaromanda X,是的,它是执行。因为 ChgText 函数运行了,我可以看到按钮标签更改为“Transfer Call”。
  • nnnnn,我还没有尝试过其他浏览器...因为它需要很长时间来测试它。我尝试运行它大约 100 次,也许大约 80 次可以工作。其他 20 次无法工作。

标签: javascript jquery html internet-explorer


【解决方案1】:

使用内联函数/样式是一种不好的做法。由于您已经拥有按钮的 ID,您可以考虑

HTML

<input id="btnCall" type="button" value="Next Call" />

JS

为你的默认代码使用 switch 语句

function init() {
    document.getElementById("btnCall").onclick = function() {
        switch(expression) {
            case n1:
            // code for case 1
            break;

            case n2:
            // code for case 1
            break;

            default:
            // your default code will run here
        }
    };
}

window.onload = init();

【讨论】:

    【解决方案2】:

    尝试移动条件检查并调用另一个函数:

    <input id="btnCall" type="button" value="Next Call"  onclick="myCall()"/>
    
    function myCall() {
        if (condition) 
            (myCall2())
        else
            (myCall3())
    

    更改按钮的 onClick 可能不是最好的方法。

    【讨论】:

    • 哦……是吗?我在想不要改变原来的 Call() 函数。那么,这意味着ie在更改onclick功能时真的有问题吗?
    • IE 有很多问题,但如果它在某些时候工作,那可能是代码中的另一个错误。如果您粘贴它,我/我们可以为您检查并在我们发现任何东西时相应地更改您的遮阳篷。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多