Vanilla JavaScript For Loop推送名称数组

时间:2013-06-06 00:36:32

标签: javascript arrays for-loop

模拟标记:

 <div class="post">
   <a name="1234"></a>
 </div>

记住这是模拟标记,当然上面有更多的html,这个是父.post中的第一个标签

这是我的代码:

var pid = []; 
var post = document.getElementsByClassName('post');
  for(var i=0;i<post.length;i++){
    var postId = post[i].getElementsByTagName('a')[0].getAttributeNode('name');
    pid.push(postId);
   }
 alert(pid);

我一直在按字面意思,,,,,,

我尝试了.getAttribute.getAttributeNode

我在这里做错了吗?我试图制作一个“名称”数组,以便稍后使用ID规范对它们进行分类。

任何建议都谢谢你!

2 个答案:

答案 0 :(得分:3)

你做的一切都没错,但你忘记了.value

var pid = []; 
var post = document.getElementsByClassName('post');
for(var i=0;i<post.length;i++){
    var postId = post[i].getElementsByTagName('a')[0].getAttributeNode('name').value;
    pid.push(postId);
 }
 alert(pid);

FIDDLE

答案 1 :(得分:1)

您可以像Tom提到的那样使用.value,也可以使用.getAttribute(&#39; name&#39;)。

您需要进一步修改代码,因为它适用于.post类中的多个锚:

<div class="post">
   <a name="1234"></a>
   <a name="5678"></a>
   <a name="9123"></a>
 </div>

JavaScript的:

var pid = []; 
var post = document.getElementsByClassName('post');
  for(var i=0;i<post.length;i++){
    var anchors = post[i].getElementsByTagName('a');    
    for(var j=0; j<anchors.length; j++){
       var name = anchors[j].getAttribute('name');
       pid.push(name);
    }    
}

for(var i=0;i<pid.length;i++){
    alert(pid[i]);
}

http://jsfiddle.net/joybroto/3d9qz/7/