我想替换html元素中的内容,所以我使用以下函数:
function ReplaceContentInContainer(id,content) {
var container = document.getElementById(id);
container.innerHTML = content;
}
ReplaceContentInContainer('box','This is the replacement text');
<div id='box'></div>
上面的工作很好,但问题是我有一个页面上的html元素,我想替换的内容。所以我不能用id,只能用类。有人告诉我,javascript不支持任何类型的内置get元素的类函数。那么,如何修改上面的代码以使其使用类而不是id呢?
附注:我不想使用jQuery。
document.querySelectorAll(".your_class_name_here");
这将适用于实现该方法的“现代”浏览器(IE8+)。
function ReplaceContentInContainer(selector, content) {
var nodeList = document.querySelectorAll(selector);
for (var i = 0, length = nodeList.length; i < length; i++) {
nodeList[i].innerHTML = content;
}
}
ReplaceContentInContainer(".theclass", "HELLO WORLD");
如果您想为旧的浏览器提供支持,您可以加载一个独立的选择器引擎,如Sizzle (4KB mini+gzip)或Peppy (10K mini),如果找不到本机querySelector方法,就返回到它。
仅仅为了获取带有特定类的元素而加载选择器引擎是否过度?可能。然而,这些脚本并没有那么大,您可能会发现选择器引擎在脚本中的许多其他地方都很有用。
这应该工作在几乎任何浏览器…
function getByClass (className, parent) {
parent || (parent=document);
var descendants=parent.getElementsByTagName('*'), i=-1, e, result=[];
while (e=descendants[++i]) {
((' '+(e['class']||e.className)+' ').indexOf(' '+className+' ') > -1) && result.push(e);
}
return result;
}
你应该可以这样使用它:
function replaceInClass (className, content) {
var nodes = getByClass(className), i=-1, node;
while (node=nodes[++i]) node.innerHTML = content;
}