Dis*_*oat 13 javascript element siblings hide
我抓住了一个元素document.getElementById('the_id').我怎样才能得到它的下一个兄弟并隐藏它?我尝试了这个,但它不起作用:
elem.nextSibling.style.display = 'none';
Run Code Online (Sandbox Code Playgroud)
Firebug错误是elem.nextSibling.style is undefined.
Rus*_*Cam 35
这是因为Firefox认为元素节点之间的空白是文本节点(而IE不是),因此.nextSibling在元素上使用会在Firefox中获取该文本节点.
有一个函数用于获取下一个元素节点是很有用的.像这样的东西
/*
Credit to John Resig for this function
taken from Pro JavaScript techniques
*/
function next(elem) {
do {
elem = elem.nextSibling;
} while (elem && elem.nodeType !== 1);
return elem;
}
Run Code Online (Sandbox Code Playgroud)
那么你可以做到
var elem = document.getElementById('the_id');
var nextElem = next(elem);
if (nextElem)
nextElem.style.display = 'none';
Run Code Online (Sandbox Code Playgroud)
看看Element Traversal API,该API仅在Element节点之间移动.这允许以下内容:
elem.nextElementSibling.style.display = 'none';
Run Code Online (Sandbox Code Playgroud)
从而避免了可能获得非Element节点的nextSibling中固有的问题(例如,TextNode保持空白)
| 归档时间: |
|
| 查看次数: |
39233 次 |
| 最近记录: |