假设此内容在您的文档中是唯一的(例如,只有其中一个),您可以使用它来查找它:
function changeColor() {
var divs = document.getElementsByTagName("div");
for (var i = 0, len = divs.length; i < len; i++) {
if (divs[i].style.backgroundColor === "blue" &&
divs[i + 1] &&
divs[i + 1].parentNode === divs[i] &&
divs[i + 1].className === "editablecontent") {
divs[i].style.backgroundColor = "white";
return;
}
}
}
这将执行以下步骤:
- 获取文档中的所有 div
- 寻找一个带有内联样式设置的 backgroundColor 设置为蓝色
- 当您找到一个检查以查看其后是否有另一个 div
- 如果下一个 div 是一个孩子
- 如果下一个 div 有
className
一个"editablecontent"
- 然后,更改其背景颜色。
如果您希望根据其他标准进行任何进一步的检查以确保您找到了正确的对象,您可以将这些检查添加到逻辑中,尽管这些检查是您向我们披露的全部内容。
工作示例:http: //jsfiddle.net/jfriend00/NmxUn/
另一种方法是使用getElementsByClassName
并安装一个像这样的 polyfill 以使其在旧浏览器中工作:
// Add a getElementsByClassName function if the browser doesn't have one
// Limitation: only works with one class name
// Copyright: Eike Send http://eike.se/nd
// License: MIT License
if (!document.getElementsByClassName) {
document.getElementsByClassName = function(search) {
var d = document, elements, pattern, i, results = [];
if (d.querySelectorAll) { // IE8
return d.querySelectorAll("." + search);
}
if (d.evaluate) { // IE6, IE7
pattern = ".//*[contains(concat(' ', @class, ' '), ' " + search + " ')]";
elements = d.evaluate(pattern, d, null, 0, null);
while ((i = elements.iterateNext())) {
results.push(i);
}
} else {
elements = d.getElementsByTagName("*");
pattern = new RegExp("(^|\\s)" + search + "(\\s|$)");
for (i = 0; i < elements.length; i++) {
if ( pattern.test(elements[i].className) ) {
results.push(elements[i]);
}
}
}
return results;
}
}
And, then you could simply do this, even on older versions of IE:
var items = document.getElementsByClassName("editablecontent");
if (items.length) {
items[0].parentNode.style.backgroundColor = "white";
}