JS在循环中使用name

时间:2014-06-19 02:54:07

标签: javascript for-loop getelementsbytagname getelementsbyclassname

我已多次尝试但没有任何作用:

在循环中,我想使用nameid属性,但它们不起作用。 var tag[] [number]不起作用。它只打印undefined一次。

我想这是一个外部问题。

<html>
    <head>
        <script type="text/javascript">
            function jat()
            {
                var cls = document.getElementsByClassName("country_events"); 

                for (n=0; n < 4; n++) 
                {   
                    var elem = cls[n];
                    document.write(elem.name);
                }
            }

            function jat2()
            {
                var cls = document.getElementsByTagName("country");

                for (n=0; n < 4; n++) 
                {   
                    var elem = cls[n];
                    document.write(elem.name);
                }
            }
        </script>
    </head>

    <body>
        <div class="country_events" name="a"></div>
        <div class="country_events" name="b"></div>
        <div class="country_events" name="c"></div>
        <div class="country_events" name="d"></div>
        <div class="country_events" name="e"></div>

        <country class="country_events" name="a"></country>
        <country class="country_events" name="b"></country>
        <country class="country_events" name="c"></country>
        <country class="country_events" name="d"></country>
        <country class="country_events" name="e"></country>

        <input type="button" value="1" onclick="jat()"></button>
        <input type="button" value="2" onclick="jat2()"></button>
    </body>

</html>

这两个功能仅打印undefined

4 个答案:

答案 0 :(得分:2)

div个元素没有name属性,您需要使用elem.getAttribute('name')来访问非标准属性。

HTML根本没有country标记,因此它们也没有name属性。所以你需要再次使用getAttribute

通常,您不应向HTML元素添加自定义属性。名为data-XXX的属性保留给用户,您应该使用这些属性。

function jat() {
    var cls = document.getElementsByClassName("country_events");

    for (n = 0; n < 4; n++) {
        var elem = cls[n];
        console.log(elem.getAttribute('name'));
    }
}

function jat2() {
    var cls = document.getElementsByTagName("country");

    for (n = 0; n < 4; n++) {
        var elem = cls[n];
        console.log(elem.getAttribute('name'));
    }
}

DEMO

答案 1 :(得分:0)

div标签不能包含名称属性,请改用 id

 <div class="country_events" id="a"></div>
 <div class="country_events" id="b"></div>
 <div class="country_events" id="c"></div>
 <div class="country_events" id="d"></div>
 <div class="country_events" id="e"></div>

 document.write(elem.id);

如果您仍想使用名称:

elem.getAttribute('name')

答案 2 :(得分:0)

要获取'name'属性,您需要使用.getAttribute

function jat()
            {
                var cls = document.getElementsByClassName("country_events"); 

                for (n=0; n < 4; n++) 
                {   
                    var elem = cls[n];
                    alert(elem.getAttribute("name"));
                }
            }

jsfiddle

答案 3 :(得分:0)

如果您阅读the documentation,则表示JavaScript element.name仅适用于以下不包含div的元素:

<a>, <applet>, <button>, <form>, <frame>, <iframe>, <img>, <input>, <map>, <meta>, <object>, <param>, <select>,<textarea>

另外,不要忘记在var循环声明中使用for,否则您将使用变量污染全局命名空间:

for (var n = 0; n < 4; n++) {

http://jsfiddle.net/LQRhe/