2013-06-06 41 views
2

模拟标记:香草的JavaScript For循环,推动名称的数组

<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规范进行分类。

任何建议,谢谢!

+0

我米不知道我明白这里有什么问题。你是什​​么意思*“我不断地从字面上得到',,,,,,'”*?这是'警报'内容?尝试'console.log()',它通常会产生更清晰的变量信息。 '.getAttribute'和'.getAttributeNode'的结果有什么区别? – acdcjunior

+0

.getAttribute提醒没什么节点警报逗号像其获取数据它只是未定义或东西 – EasyBB

+0

是啊,我不能重现你的错误,使用'getAttribute'当你的代码工作对我来说:http://jsfiddle.net/ pQE2X/1/ – acdcjunior

回答

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

+0

真的吗?我们需要用这个值来放置.value?我认为这只是为了像投入和textareas哈哈。谢谢你,我现在就试试看! – EasyBB

1

您可以使用.value的汤姆提到或者您可以使用.getAttribute( '名')。

您将需要一点点进一步修改你的代码,它超过一个锚。员额类工作:

<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/