字符串与标签文本javascript

时间:2015-12-07 21:23:06

标签: javascript

我正在创建一个网站,我基本上需要查看字符串是否匹配,以便将结果标记为正确(绿色)或错误(红色)。

我遇到的问题是它总是变成红色,即使字符串都相同,我也不知道哪里出错了。

这是代码

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.innerHTMLalert()并且它给出了相同的结果,但是当我尝试比较它们时它不起作用...也尝试使用{{ 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>...

3 个答案:

答案 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,这就是您比较错误的原因。

我至少看到两种解决方法

  1. 将分割表达式更改为

    split = text.split(/\b\d+\.\r\n/);
    
  2. 在比较之前替换此符号

    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代替innerHTMLtrim

if(rightAnswer == answer1.textContent.trim()){
...
}