我想使用javascript隐藏没有与其关联的ID的div。例如,在sharepoint .ms-globalbreadcrumb
中没有id。
frame = document.getElementById('frame1');
frame.contentWindow.document.getElementById('ctl00_PlaceHolderGlobalNavigation_PlaceHolderGlobalNavigationSiteMap_GlobalNavigationSiteMap').style.display='none';
上面的代码适用于有ID的部分,但我不知道如何为没有id的其他div实现此目的。
谢谢,
答案 0 :(得分:1)
使用规范化访问DOM的东西可以让您的生活变得更轻松,因此相同的代码(对于所有内容 - 表单,事件,对象属性等)适用于所有浏览器。使用JQuery只是:
$('div').hide();
隐藏所有div ...并且有大量'selectors'来优化您的选择。
答案 1 :(得分:1)
案例1
如果你想隐藏所有没有id的div,那么你必须循环所有的div并根据这个标准隐藏它们。 (找到包含.getElementsByTagName()
)的div
var alldivs = document.getElementsByTagName('div');
for( var i = 0; i < alldivs.length; i++) {
alldivs[i].style.display = "none";
}
案例2
如果你想根据一个类找到元素,比如你的例子.ms-globalbreadcrumb
那么(找到带有.getElementsByClassName()
的类的元素)
var allbyclass = document.getElementsByClassName('ms-globalbreadcrumb');
for( var i = 0; i < allbyclass.length; i++) {
allbyclass[i].style.display = "none";
}
( getElementsByClassName
不适用于IE的IE9之前版本)
示例,两个案例都在http://jsfiddle.net/gaby/H3nNr/
<强>建议强>
使用jQuery允许各种各样的selectors和复杂traversing的DOM来查找您想要的内容。
$('div:not([id])').hide();
$('.ms-globalbreadcrumb').hide();
答案 2 :(得分:0)
如果你可以在DOM中找到div,那么你应该可以隐藏它们。例如,如果父/祖父母等div具有ID,则可以使用Javascript在DOM树中查找,直到找到要隐藏的元素为止。
var elem = document.getElementById("topelement");
var elem2 = elem.firstChild.firstChild;
elem2.style.display = "none";
JQuery有很多选择器可以让这种事情变得简单。
答案 3 :(得分:0)
所以您可以使用其他方法 你可以通过标记名或类来获取它们
document.getElementsByClassName
document.getElementsByTagName
他们返回你需要迭代的元素列表
所以你的榜样应该是
var ellements = frame.contentWindow.document
.getElementsByClassName("ms-globalbreadcrumb");
for(i in ellements) {
ellements[i].style.display = "none";
}