【问题标题】:Why does this Javascript work in Firefox, but not Internet Explorer?为什么这个 Javascript 可以在 Firefox 中工作,但不能在 Internet Explorer 中工作?
【发布时间】:2009-08-07 13:27:51
【问题描述】:
  <img src="images/butAdd.png" onclick="addField(1,1);" />

  <div id="divField"></div>
  <script type="text/javascript">
    function addField(count, type) {
        var bid = document.getElementById("bid").value;
        $("#divField").append("<a href='#' onClick='javascript:removeField(\"#bow" + bid + "\"); return false;'><img src='images/closeSmall.png' /></a>");  
        }

    function removeField(bid) {
        $(bid).remove();
    }
 </script>

考虑一下这个在 Firefox 中运行良好但在 Internet Explorer 中运行良好的 Javascript 代码。

函数addField() 有效,但removeField() 无效。

关于为什么这不起作用的任何想法,或任何解决方法?

【问题讨论】:

  • 功能似乎是, 1. 从#bid 中获取输入值并构造一个锚点,该锚点调用传入选择器#bow+bidvalue 的removeField 函数。 2. 单击链接删除元素#bow+bidvalue 其中bidvalue 是#bid 元素的输入值。我错过了什么吗?
  • 看这里的代码,调用addField()时没有id为'bid'的元素,所以该函数会失败。
  • 无论你在做什么,你都很难做到!去了解更多 jQuery 它将帮助您简化代码。

标签: javascript internet-explorer firefox


【解决方案1】:

试试这个。

function addField(count, type) {
                            $("#divField").append("<a href='#' onClick='javascript:removeField(); return false;'><img src='images/closeSmall.png' /></a>");      
                    }

                    function removeField() {
                            $("#bid").remove();
                    }

【讨论】:

    【解决方案2】:

    onclick 事件不应在代码前包含“javascript:”。只有当你使用'href='来放置JS代码时,这样的字符串才应该是。

    【讨论】:

      【解决方案3】:

      我认为这与名为“bid”的变量有关。变量的值仅在您调用 addField() 时才被分配,并且它是该方法的本地变量。

      在 removeField() 中,'bid' 的值未定义,这就是它不起作用的原因。

      尝试像这样更改 removeField()

      function removeField() {
          var bid = document.getElementById("bid").value;
          $(bid).remove();
      }
      

      【讨论】:

        【解决方案4】:

        您的 addFiled 可能如下所示:

        $("<a href='#'><img src='images/closeSmall.png' /></a>").appendTo("#divField")
          .click(function() {
            $("#bid").remove();
          })
        

        【讨论】:

          【解决方案5】:

          尝试改变:

          var bid = document.getElementById("bid").value;
          

          var bid = $("#bid").val();
          

          我认为 IE 处理 .value 与 firefox 的方式有一个怪癖

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-01-11
            • 2012-11-01
            • 2010-12-16
            • 2016-02-28
            • 2015-02-08
            • 2016-03-04
            • 2013-05-18
            相关资源
            最近更新 更多