我正在创建一个网站,我基本上需要查看字符串是否匹配,以便将结果标记为正确(绿色)或错误(红色)。
我遇到的问题是它总是变成红色,即使字符串都相同,我也不知道哪里出错了。
这是代码
var checkedButton = getCheckedRadio(document.getElementsByName("answer"));
var id = checkedButton.id;
if(id=="answer1"){
var answer1 = document.getElementById("answer1text");
if(rightAnswer == answer1.innerHTML){
answer1.style.color = "#33FF00";
}
else{
answer1.style.color = "red";
}
}
else if(id=="answer2"){...
我已使用rightAnswer
检查了answer1.innerHTML
和alert()
并且它给出了相同的结果,但是当我尝试比较它们时它不起作用...也尝试使用{{ 1}}运算符,同样的事情......
HTML代码编辑
===
编辑2 - 整个Javascript
<form>
<div id="left">
<div id="a1">
<input type="radio" name="answer" value="" checked id="answer1">
<label id="answer1text">Odgovor na prvo pitanje</label>
</div>
<div id="a2">
<input type="radio" name="answer" value="" id="answer2">
<label id="answer2text">Odgovor na prvo pitanje</label>
</div>
</div>
<div id="right">
<div id="a3">
<input type="radio" name="answer" value="" id="answer3">
<label id="answer3text">Odgovor na prvo pitanje</label>
</div>
<div id="a4">
<input type="radio" name="answer" value="" id="answer4">
<label id="answer4text">Odgovor na prvo pitanje</label>
</div>
</div>...
答案 0 :(得分:1)
正如我所看到的,你有这两行的问题
var text = "1.\r\n"+...\\here is a huge string of text
split = text.split(/\b\d+\./);
分割split[1]
后,不只是文字,而是以\r\n
开头的文字,
但是!在html序列间隔符号中只减少了一个,在您的情况下innerHTML
将会启动\n
,这就是您比较错误的原因。
我至少看到两种解决方法
将分割表达式更改为
split = text.split(/\b\d+\.\r\n/);
在比较之前替换此符号
rightAnswer.replace(/\r|\n/g,"") == answer1.innerHTML.replace(/\r|\n/g,"")
答案 1 :(得分:0)
尝试使用textContent
获取标签文字而不是innerHTML
:
if(rightAnswer == answer1.textContent){
answer1.style.color = "#33FF00";
}else{
answer1.style.color = "red";
}
注意:也许问题是rightAnswer
您应该从中获取此值。
希望这有帮助。
答案 2 :(得分:0)
我认为您应该使用textContent
代替innerHTML
和trim
:
if(rightAnswer == answer1.textContent.trim()){
...
}