为什么这个Javascript在Firefox中有效,而在Internet Explorer中无效?

时间:2009-08-07 13:27:51

标签: javascript internet-explorer firefox

  <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中运行良好的Javascript代码,但不能在Internet Explorer中运行。

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

关于为什么这不起作用或任何变通方法的任何想法?

5 个答案:

答案 0 :(得分:3)

试试这个。

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

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

答案 1 :(得分:3)

onclick事件不应该在代码前面有'javascript:'。只有在使用'href ='来放置JS代码时才应该使用这样的字符串。

答案 2 :(得分:2)

我认为这与称为“出价”的变量有关。只有在调用addField()并且它是该方法的本地值时,才会分配变量的值。

在removeField()中,'bid'的值未定义,这就是它无效的原因。

尝试像这样更改removeField()

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

答案 3 :(得分:0)

您的addFiled可能如下所示:

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

答案 4 :(得分:0)

尝试改变:

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

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

我认为IE使用.value vs firefox

的方式有一个怪癖