为什么这个函数getElementsByClassName不适用于IE7,8?

时间:2014-12-03 13:30:26

标签: javascript jquery html css internet-explorer

为什么这个函数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>

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

正如您在此处http://caniuse.com/#search=getElementsByClassName和此处https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByClassName所见 函数getElementsByClassName是在IE9中引入的,因此它在早期版本中不起作用。

答案 2 :(得分:0)

IE8不支持

getElementsByClassName,仅支持IE9及更高版本。您可以使用polyfill来获取功能,也可以使用document.querySelectorAll(selector)这是一个更强大的功能。参数selector是IE8的CSS选择器可以执行的任何操作。