<p id ="myP">
Render this text using the myC class </p>
---------------------------
.teststyle {
background-color:#00ff00;
font-size: 200%;
}
---------------------
window.onload = load;
function load(){
document.getElementById("myP").className = "teststyle";
}
----------------------
使用jsfiddle.net和JavaScript我发现JS中不支持“getElementByClass”。我想知道为什么?如果我的XTHML代码中有一个类,如何转换此代码怎么办?
我注意到的另一个奇怪的事情是:如果我在xhtml中使用onload = "load()"
将不会像js-code中的"windows.load"
那样工作......为什么会这样?应该是一样的,也许只是我......谢谢!
答案 0 :(得分:5)
不,不,因为函数的名称是:
getElementsByClassName
// ^ ^^^^
Note that it is not support in IE before IE9.
Have a look at the documentation of getElementsByClassName
.
关于onload
问题:如果没有更多代码,很难说出你做错了什么。如果你这样做
<body onload="load()">
它会起作用。但是,无论如何都应该避免这样做(在HTML中附加事件处理程序)。
答案 1 :(得分:1)
我发现JS,uhn不支持“getElementByClass”?有趣的想知道为什么?
因为JS中没有本机DOM操作。这是一个单独的API(由浏览器,其他一些JS环境提供,libraries提供给其他环境。)
...但是为了这个问题的目的,你可能会将浏览器DOM实现作为JS的一部分来计算:
因为class
不是通用的DOM概念,所以它是特定于HTML的(或至少以这种方式开始)。 getElementsByClassName
(注意名称!)是草稿规范中的新功能,并非所有浏览器都已实施。
那么如果我在XTHML代码中有一个类怎么能转换这个代码呢?
你没有在该代码中使用getElementsByClassName,所以它没有多大意义。
有很多第三方库提供了基于它们所属的类获取元素的方法。有些实现了getElementsByClassName,有些只是实现了选择器引擎(比如YUI和jQuery)。
我注意到的另一个奇怪的事情是:如果我在xhtml中使用onload =“load()”将无法正常运行,就好像我在js-code中有“windows.load”一样...... dat怎么样?它应该是一样的,也许只是我......谢谢!
一个会覆盖另一个。
答案 2 :(得分:1)
function getElementsByClassName( strClassName, obj ) {
var ar = arguments[2] || new Array();
var re = new RegExp("\\b" + strClassName + "\\b", "g");
if ( re.test(obj.className) ) {
ar.push( obj );
}
for ( var i = 0; i < obj.childNodes.length; i++ )
getElementsByClassName( strClassName, obj.childNodes[i], ar );
return ar;
}
用法:
var aryClassElements = getElementsByClassName( 'findMe', document.body );
来自:http://www.tek-tips.com/viewthread.cfm?qid=1143850&page=1
你们在发布这里之前搜索谷歌吗?