Sam*_*ami 0 javascript if-statement
我试图仅在两个值之间存在匹配时才执行此代码,并且我使用 if/else 语句,并且我在“ELSE”语句中放置了另一个将背景颜色更改为红色的函数,但即使条件不满足......当我单击第一个按钮“美国按钮”时,它执行得很好,但是当单击其他两个按钮中的任何一个时,它会执行这两个语句,即写“是,匹配”并更改背景颜色虽然它在ELSE 语句中.. 我怎么能阻止这个??? 这是我的代码
const words = {
"united states": "us",
"united kingdoms": "uk",
"united nations": "un",
};
function check(val) {
for (word in words) {
if (val == word) {
document.getElementById('debug').innerHTML = "Yes, Matched";
break;
} else {
document.getElementById('debug').innerHTML = "No Match";
bgRed();
}
}
};
function bgRed() {
for (i = 0; i < 3; i++) {
document.getElementsByTagName('input')[i].style.background = 'red';
}
}Run Code Online (Sandbox Code Playgroud)
* {
text-align: center
}
input {
margin: 30px;
}Run Code Online (Sandbox Code Playgroud)
<input type="button" value="united states" onclick="check(this.value)"><br>
<input type="button" value="united kingdoms" onclick="check(this.value)"><br>
<input type="button" value="united nations" onclick="check(this.value)">
<div id="debug"></div>Run Code Online (Sandbox Code Playgroud)
原因是for (word in words)循环,假设您正在尝试匹配words列表中的每个选项。
只有美国不变成红色的原因是循环在进入 else 语句之前就中断了。
你想要的可能是一个
var found = false;
for (word in words) {
if (val == word) {
document.getElementById('debug').innerHTML = "Yes, Matched";
found = true;
break;
}
}
if found == true {
// do something
} else {
// do something else
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |