2011-05-19 67 views
0

我想隐藏没有与他们使用JavaScript相关的ID的div。例如,在共享点.ms-globalbreadcrumb中没有ID。使用javascript隐藏divs

frame = document.getElementById('frame1'); 
frame.contentWindow.document.getElementById('ctl00_PlaceHolderGlobalNavigation_PlaceHolderGlobalNavigationSiteMap_GlobalNavigationSiteMap').style.display='none'; 

上面的代码适用于具有ID的部分,但我不知道如何为其他没有ID的DIV实现此功能。

感谢,

回答

0

如果你能找到在DOM的div,那么你应该能够隐藏起来。例如,如果一个父/祖父母等的div有一个ID,你可以沿着DOM树走下去,直到找到你想要隐藏的元素。

var elem = document.getElementById("topelement"); 
var elem2 = elem.firstChild.firstChild; 
elem2.style.display = "none"; 

JQuery有很多选择器让这种事情变得简单。

1

使用标准化访问DOM的东西可以让你的生活变得更加轻松,因此相同的代码(对于所有内容(表单,事件,对象属性等)在所有浏览器中都可以工作。使用JQuery它只是:

$('div').hide(); 

隐藏所有div ...并有一个巨大的'selectors'范围缩小选择范围。

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找到你想要的东西..

  • 案例1中的jQuery将$('div:not([id])').hide();
  • 案例2中的jQuery将$('.ms-globalbreadcrumb').hide();
+0

我使用jQuery 1.5.1分钟JS使用您提供它似乎并没有掩盖它的代码。任何想法为什么? – elmander 2011-05-19 13:02:21

+0

@elmander,我在jquery examplew中出错。情况1的例子会隐藏所有的div,而不是没有'id'的。现在我修复它只选择那些没有'ID'。 – 2011-05-19 13:06:21

+0

@elmander,也要确保你在处理div,因为我们特别针对这些例子中的那些。如果dom中的元素是“span”,它将不会选择它们。 – 2011-05-19 13:08:10

0

所以那里有其他的方法可以使用 您可以通过标记名或类让他们

document.getElementsByClassName 
document.getElementsByTagName 

他们返回您需要迭代的元素列表

所以你的例子shud是

var ellements = frame.contentWindow.document 
    .getElementsByClassName("ms-globalbreadcrumb"); 
for(i in ellements) { 
    ellements[i].style.display = "none"; 
}