foo = document.getElementById("outer");
function cycleIt() {
if (client.browser.Firefox) {
foo.addEventListener("animationend", updateClassName, true);
} else {
foo.addEventListener("webkitAnimationEnd", updateClassName, true);
}
}
function updateClassName() {
var z = foo.getAttribute("class");
if ( z == "a" ) {
foo.className = "b";
} else if ( z == "b" ) {
foo.className = "c"
} else if ( z == "c" ) {
foo.className = "d"
} else {
foo.className = "a"
}
return foo;
}
有人在Javascript聊天频道上告诉我,我应该为if if语句创建一个哈希表。我该怎么办呢?
答案 0 :(得分:5)
您创建哈希表(实际上只是一个普通对象):
var table = {
"a": "b",
"b": "c",
"c": "d"
};
然后使用该表将输入z
映射到输出(类名):
var z = foo.getAttribute("class");
foo.className = table[z] || "a";
return foo;
语法table[z] || "a"
是写
if (table[z] === undefined) {
foo.className = "a";
}
else {
foo.className = table[z];
}
这两种样式并不完全等效,但在这种情况下(散列中的所有值都是字符串,而且它们都不是空字符串)它的工作方式相同。
答案 1 :(得分:1)
您要做的是将z
值映射到类名,如下所示:
function updateClassName() {
foo.className = ({
a: "b",
b: "c",
c: "d"
})[foo.className] || "a";
return foo;
}
对象文字是指定旧值(键)应该去哪个新值(值)的映射。此外,它使用|| "a"
指定默认情况。