IE7中的Javascript模操作
Javascript modulo operation in IE7
对于在List中每第三个项目添加一个类,我使用像这样的模操作:
var projectElements = document.getElementById("projectList").children;
var iCount = 0;
for (var i in projectElements) {
iCount++;
if (iCount % 3 == 0) {
if (projectElements[i].className == "") {
projectElements[i].className += "projectLinkLast";
}
else {
projectElements[i].className += " projectLinkLast";
}
}
}
它在Firefox和除Internet Explorer 7以外的其他浏览器中运行良好。有人知道为什么吗?
问题不是模算符。问题可能是您在宿主对象(在本例中是元素的children
属性)上使用了for...in
,这是一个糟糕的主意,不能保证按预期工作(或者根本不能保证按预期工作)。此外,children
不支持在所有浏览器(虽然它是在IE 7,所以这不是在该浏览器的问题)。我建议这样做:
var iCount = 0, child = document.getElementById("projectList").firstChild;
while (child) {
if (child.nodeType == 1) { // Only deal with elements
iCount++;
if (iCount % 3 == 0) {
if (child.className == "") {
child.className = "projectLinkLast";
}
else {
child.className += " projectLinkLast";
}
}
}
child = child.nextSibling;
}
尝试使用.setAttribute("className", "blah")
代替。classname。
在JSFiddle上得到了代码的演示,似乎可以工作:http://jsfiddle.net/LWsTn/6/
如果你要使用jQuery。用途:
$("#projectList :nth-child(3n").addClass("projectLinkLast");
文档:http://api.jquery.com/nth-child-selector/
jQuery正在使用的addClass方法可能会有所帮助
classNames = value.split(rspace);
for (i = 0, l = this.length; i < l; i++) {
elem = this[i];
if (elem.nodeType === 1) {
if (!elem.className && classNames.length === 1) {
elem.className = value;
} else {
setClass = " " + elem.className + " ";
for (c = 0, cl = classNames.length; c < cl; c++) {
if (!~setClass.indexOf(" " + classNames[c] + " ")) {
setClass += classNames[c] + " ";
}
}
elem.className = jQuery.trim(setClass);
}
}
}
相关文章:
- 操作javascript变量[HTML]以只显示文本
- 如何使用keyup或input进行操作?javascript(jQuery)
- RubyonRails环境控制器操作JavaScript响应
- 在替换之前,操作javascript正则表达式匹配,例如$1
- 每次 iframe 重新导航时执行操作.(JavaScript)
- 使用下划线操作 JavaScript 对象
- 如何阻止 confirm() 的默认操作 JavaScript
- 结束游戏的逻辑操作 Javascript
- 操作 JavaScript 日期对象
- CSS 样式操作:Javascript 不起作用
- 镜像/复制鼠标操作 JavaScript
- 使用Java操作JavaScript
- 操作JavaScript数组
- 循环遍历无序列表并对每个节点执行操作Javascript
- 操作Javascript数据在D3.js上切换系列
- 如何通过在检查器中操作Javascript来抓取表?页面仅显示当前日期's的数据,但我想回到过去,重新收集
- 从java操作Javascript对象
- 更改默认键操作JavaScript
- 使用Jquery $.each()操作Javascript对象
- 是否有一种方法可以使用JS或jQuery来操作JavaScript表单