哪种浏览器支持哪种方法?
document.getElementById
仅当元素具有id='targetvalue'
. 您上面的示例显示了class
属性中的值,而不是id
.
您可以使用getElementsByClassName
,尽管 IE8 或更低版本不支持此功能。还有document.querySelectorAll
,它在 IE 中的支持稍好一些。
嗯,浏览器支持图表很漂亮
您可以在http://www.quirksmode.org/dom/w3c_core.html#gettingelements查看浏览器对在线获取元素的各种方法的支持。
一个人做的冗长
制作广泛的跨浏览器兼容解决方案可能很冗长:
var parent = document.getElementById("project_user"),
element;
// If the browser supports querySelectorAll, use it.
if ( parent.querySelectorAll ) {
element = parent.querySelectorAll('.project_username')[0];
// Else, if getElementsByClassName is supported, use it.
} else if ( parent.getElementsByClassName ) {
element = parent.getElementsByClassName('project_username')[0];
// Else, roll up our sleeves, let's do this the hard way
} else {
var spans = parent.getElementsByTagName("span"),
spani = spans.length;
while ( spani-- ) {
if ( spans[spani].className === "project_username" ) {
element = spans[spani];
break;
}
}
}
使用好工具的简洁性
或者你可以使用像 jQuery 这样的东西来减少你的挫败感:
var $element = $(".project_username");