使用Id获取数据与使用Name获取数据之间的区别

时间:2016-06-25 05:30:51

标签: javascript dom

     <html>
     <head></head>
     <body onload="DecTime();">
     <label id="decTimer" name="decTimer1">5:00</label>
     </body>
     <script type="text/javascript">
         function(){                 
            console.log(document.getElementById("decTimer").innerHTML);
            console.log(document.getElementsByName("decTimer1").innerHTML);
         }
     </script>

输出:

第一个控制台:5:00

第二台控制台:未定义

有什么区别?提前谢谢。

4 个答案:

答案 0 :(得分:2)

获取元素 ById并获取元素 ByName。第二个返回一个集合。您应该首先通过索引获取特定元素或遍历集合,然后阅读innerHTML。返回的集合本身没有innerHTML属性。

答案 1 :(得分:1)

ID是唯一的,名称不是。 尝试

console.log(document.getElementsByName("decTimer1")[0].innerHTML);

因为getElementsByName返回一个节点列表,因为名称get Elements 建议。

答案 2 :(得分:0)

JS小提琴:https://jsfiddle.net/manishghec/u9q0Lq5t/

主要区别在于,名称来自对象,节点列表来自第0个索引。

 console.log(document.getElementById("decTimer").innerHTML);
 console.log(document.getElementsByName("decTimer1")[0].innerHTML);

答案 3 :(得分:0)

getElementsByName返回一个nodelist集合。所以要检索值  使用$json_string = file_get_contents("client_master.json"); $parsed_json = json_decode($json_string, true); var_dump($parsed_json); if (is_array($users) || is_object($users)) { foreach ($parsed_json as $field => $value) { // Use $field and $value here echo $filed ."as ".$value; } } else{ echo mysql_error(); } 您需要传递索引

document.getElementsByName

我可以在你的函数声明中看到另一个问题。如果函数表达式不是立即调用函数表达式,则它必须具有名称(在上面的示例中为function abc(){ document.write('<pre>'+document.getElementById("decTimer").innerHTML+'</pre>'); document.write('<pre>'+document.getElementsByName("decTimer1")[0].innerHTML+'</pre>'); } abc(); )。否则,您可能会看到abc

之类的错误

JSFIDDLE