【问题标题】:Why this function getElementsByClassName not work on IE7 ,8? [duplicate]为什么这个函数 getElementsByClassName 在 IE7 ,8 上不起作用? [复制]
【发布时间】:2015-02-01 02:11:43
【问题描述】:

为什么getElementsByClassName这个函数不能在IE7 ,8 上运行?

我认为导致我的问题来自

var decimal_id_name = document.getElementsByClassName('decimal')[z_decimal].id

如何申请IE7、8的工作?

http://jsfiddle.net/Fp4sJ/828/

为了测试,当用户press button时,它会提醒输入的id名称。

<form method="post" ENCTYPE = "multipart/form-data" onsubmit="return checkform(this);">
<input type="text" class="decimal" id="number0" size="20" name="number[]">
<input type="text" class="decimal" id="number1" size="20" name="number[]">
<input type="text" class="decimal" id="number2" size="20" name="number[]">
<input type="text" class="decimal" id="number3" size="20" name="number[]">
<input type="text" class="decimal" id="number4" size="20" name="number[]">
<input type="submit" name="submit" value="Next"/>
</form>

<script language="JavaScript" type="text/javascript">
function checkform ( form )
{
    function getElementsByClassName(node, classname) {
        var a = [];
        var re = new RegExp('(^| )'+classname+'( |$)');
        var els = node.getElementsByTagName("*");
        for(var i=0,j=els.length; i<j; i++)
            if(re.test(els[i].className))a.push(els[i]);
        return a;
    }
    var list_decimal = getElementsByClassName(document.body,'decimal');


    for (z_decimal = 0; z_decimal < list_decimal.length; ++z_decimal) {
        var decimal_id_name = document.getElementsByClassName('decimal')[z_decimal].id
        alert(decimal_id_name);
    }
    return false ;
}
</script>

【问题讨论】:

    标签: javascript jquery html css internet-explorer


    【解决方案1】:

    getElementsByClassName不支持IE8,只有IE9及以上。您可以使用 polyfills 来获取功能,也可以使用 document.querySelectorAll(selector),这是一个更强大的功能。参数selector 是IE8 的CSS 选择器可以做的任何事情。

    【讨论】:

      【解决方案2】:

      您可以在这里看到http://caniuse.com/#search=getElementsByClassName 和这里https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByClassName 函数getElementsByClassName是在IE9中引入的,所以在早期版本中不能使用。

      【讨论】:

        【解决方案3】:

        【讨论】:

          猜你喜欢
          • 2015-01-18
          • 2013-04-04
          • 1970-01-01
          • 1970-01-01
          • 2012-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-10
          相关资源
          最近更新 更多