将 Javascript 哈希表用于多个 If Thens
Use Javascript Hash table for Multiple If Thens
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-then语句制作一个哈希表。我该怎么做呢?
你创建了哈希表(它实际上只是一个普通对象):
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];
}
这两种样式并不完全等效,但在这种情况下(哈希中的所有值都是字符串,没有一个是空字符串),它的工作方式相同。
你要做的是将z
值映射到类名,如下所示:
function updateClassName() {
foo.className = ({
a: "b",
b: "c",
c: "d"
})[foo.className] || "a";
return foo;
}
对象文本是指定哪个旧值(键)应转到哪个新值(值)的映射。此外,它还使用 || "a"
来指定默认大小写。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如果 a 为 false,则 if(a) === if(false)
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- 正在尝试使用if和else添加类,但无法正常工作
- 在PHP中使用javascript更改页面标题'if'
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- 什么是&&在没有if的行中的变量之间
- 另一个if(!$scope.$$phase)$scope$apply()szenario-需要帮助才能通关
- Sharepoint JScript if语句未执行
- Javascript:If-then语句在函数中不起作用
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 对于loop.if-仅在经过所有间隔后返回true
- Javascript Return and if/else
- Javascript nested if
- 在if语句下的html中使用javascript变量
- 将 Javascript 哈希表用于多个 If Thens