该.tagName
属性是否适用于直接元素?我一直在使用子元素作为起点让它工作,但我不能让它在直接元素上工作。
这是一个有效的示例:
HTML
<p>This is paragraph 1.</p>
<p>This is paragraph 2.</p>
<p>This is paragraph 3.</p>
<p>This is paragraph 4.</p>
<div>
<p id="foo">This is paragraph 5.</p>
</div>
JavaScript
(function(){
var el = document.getElementById("foo");
var name = el.parentNode.tagName;
alert(name);
}());
这让我得到了 div 元素的名称,这就是我想要实现的,但是有没有更短的方法?
我不想为元素添加标识符并以这种方式定位它,这是因为我不想在我的 HTML 文档中添加不必要的标记。这是一个有效的示例,但依赖于标识符。
HTML
<p>This is paragraph 1.</p>
<p>This is paragraph 2.</p>
<p>This is paragraph 3.</p>
<p>This is paragraph 4.</p>
<div id="bar">
<p id="foo">This is paragraph 5.</p>
</div>
JavaScript
(function(){
var el = document.getElementById("bar");
var name = el.tagName;
alert(name);
}());
如您所见,这获得了预期的效果,但依赖于标识符。所以我想:“我不能.tagName
在元素本身上使用属性并用 定位元素.getElementsByTagName()
吗?”
HTML
<p>This is paragraph 1.</p>
<p>This is paragraph 2.</p>
<p>This is paragraph 3.</p>
<p>This is paragraph 4.</p>
<div>
<p id="foo">This is paragraph 5.</p>
</div>
JavaScript
(function(){
var el = document.getElementsByTagName("div");
var name = el.tagName;
alert(name);
}());
答案是不。这让我得到了undefined
. 为什么是这样?有人有解决方案吗?
链接到 jsFiddle:http: //jsfiddle.net/BV5EP/