javascript警报无法正确使用if语句

javascript警报无法正确使用if语句,javascript,if-statement,alert,Javascript,If Statement,Alert,我想检查我选择的标记和输入值是否相同,但js中的警报即使相同也能工作。这是我的密码!谢谢你的支持 HTML <select id="mark"> <option value="o">o</option> <option value="x">x</option> </select> <input type="text" name="block%s" id="block" onchange="check()"&g

我想检查我选择的标记和输入值是否相同,但js中的警报即使相同也能工作。这是我的密码!谢谢你的支持

HTML

<select id="mark">
  <option value="o">o</option>
  <option value="x">x</option> 
</select>
<input type="text" name="block%s" id="block" onchange="check()">
<input type="text" name="block%s" id="block" onchange="check(this)">

您需要将这些变量放入函数中,否则这些值是在开始时确定的,以后不会更改

函数检查(){
var mark=document.getElementById(“mark”).value;
var block=document.getElementById(“block”).value;
如果(块!=标记){
警惕(“你的标记错误”);
返回false;
}
否则{
返回true;
}
}

o
x

您的JavaScript代码应该是这样的:(函数后面声明的块
var


var mark=document.getElementById(“mark”).value;
函数检查(){
var block=document.getElementById(“block”).value;
console.log(标记+'-'+块)
如果(块!=标记){
警惕(“你的标记错误”);
返回false;
}否则{
返回true;
}
} 

首先创建函数
check()

通过
selectedIndex
selectedValue

var e = document.getElementById("mark");
var strUser = e.options[e.selectedIndex].value;

然后比较
selectedValue的值
输入
文本,并根据需要在警报中显示适当的消息

功能检查应包括所有变量。在这里,试试这个:

function check(){
var mark=document.getElementById("mark").value;
var block=document.getElementById("block").value;

if(block != mark) { 
   alert ('Your mark is wrong'); 
    return false; 
}
else{
  alert ('Your mark is right');
    return true; 
}
}  

变量应该在函数内部

请尝试以下操作:

HTML

<select id="mark">
  <option value="o">o</option>
  <option value="x">x</option> 
</select>
<input type="text" name="block%s" id="block" onchange="check()">
<input type="text" name="block%s" id="block" onchange="check(this)">
当用户离开输入框时,还可以使用输入框的
onblur
调用
check()


最好保存对DOM元素的引用一次,并比较函数中的值(
mark.value
/
block.value
),而不是每次都查询由@theAlexandrian编辑并批准的DOM。谢谢
function check(inputBox) {
var markBox = document.getElementById("mark");
var mark = markBox[markBox.selectedIndex].value;
var block = inputBox.value;
  if (block != mark) { 
    alert ('Your mark is wrong'); 
    return false;
  } else {
    return true; 
  }
}