javascript中比较字符串时遇到的问题

javascript中比较字符串时遇到的问题,javascript,Javascript,我在JS比较字符串时遇到了一个奇怪的问题。一个字符串来自用户输入 y = data; document.getElementById("typeThisWord").innerHTML = y; x = document.getElementById("inputField"); document.getElementById("youTyped").innerHTML = x.value; first = document.getElementById("youTyped"); second

我在JS比较字符串时遇到了一个奇怪的问题。一个字符串来自用户输入

y = data;
document.getElementById("typeThisWord").innerHTML = y;
x = document.getElementById("inputField");
document.getElementById("youTyped").innerHTML = x.value;
first = document.getElementById("youTyped");
second = document.getElementById("typeThisWord");
if(first==second) correct=true;
当两个词都是一样的时候,结果仍然是错误的。我添加了“第一”和“第二”变量,只是想看看这是否会产生影响。之前我试着比较“x”和“y”。我还尝试了x.value==y、x==y.value和x.value==y.value。“first”和“second”也是如此。令人惊讶的是,first.value==second.value始终是真的,即使它不应该是真的

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
        var x, y;
        var first, second;
        var availV = window.innerHeight - 100;
        var availH = window.innerWidth - 100;
        var randV, randH;
        var correct = new Boolean(); correct=true;
        var imageX;
        function displayWord() {

            if(correct) {
                correct=false;
                $.ajax({
                    url: "http://localhost:25578/TypeGood/VisitsSession",
                    success: function(data) { y = data; },
                    async: false
                });
                document.getElementById("typeThisWord").innerHTML = y;
                imageX = document.createElement("img");
                imageX.src = "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRPRV4XdE7C9sa0pM-FeXcOSQydg7Sh0INg-ZD6FKZ4wjY8WPHa5Q";
                imageX.height = 100;
                imageX.width = 100;
                imageX.style.position = "absolute";
                randV = Math.round( Math.random() * availV );
                randH = Math.round( Math.random() * availH );
                imageX.style.top = randV + "px";
                imageX.style.left = randH + "px";
                imageX.style.zIndex = "-20";
                document.body.appendChild(imageX);
            }
            x = document.getElementById("inputField");
            document.getElementById("youTyped").innerHTML = x.value;
            first = document.getElementById("youTyped").innerHTML;
            second = document.getElementById("typeThisWord").innerHTML;
            if(first==second) {correct=true;}
            x.value = "";

        }
    </script>

变量x,y;
var第一,第二;
var availV=window.innerHeight-100;
var availH=window.innerWidth-100;
var randV,randH;
var correct=new Boolean();正确=正确;
var-imageX;
函数displayWord(){
如果(正确){
正确=错误;
$.ajax({
url:“http://localhost:25578/TypeGood/VisitsSession",
成功:函数(数据){y=data;},
异步:false
});
document.getElementById(“typeThisWord”).innerHTML=y;
imageX=document.createElement(“img”);
imageX.src=”https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRPRV4XdE7C9sa0pM-FeXcOSQydg7Sh0INg-ZD6FKZ4wjY8WPHa5Q”;
imageX.height=100;
imageX.width=100;
imageX.style.position=“绝对”;
randV=Math.round(Math.random()*availV);
randH=Math.round(Math.random()*availH);
imageX.style.top=randV+“px”;
imageX.style.left=randH+“px”;
imageX.style.zIndex=“-20”;
document.body.appendChild(imageX);
}
x=document.getElementById(“inputField”);
document.getElementById(“youTyped”).innerHTML=x.value;
first=document.getElementById(“youTyped”).innerHTML;
second=document.getElementById(“typeThisWord”).innerHTML;
如果(first==second){correct=true;}
x、 value=“”;
}

getElementById
返回对DOM元素的引用,而不是字符串,因此您不是在比较字符串,而是在比较DOM元素。因为它们是不同的元素,所以它们不是
=

至少,您的最后三行应该是:

first = document.getElementById("youTyped").innerHTML;
second = document.getElementById("typeThisWord").innerHTML;
if(first==second) correct=true;
(例如,使用元素的
innerHTML
,它是一个字符串。)尽管我认为我可能会将值保留在变量中,而不是返回到DOM中

并从html中检索值,如下所示:

 first = document.getElementById("youTyped").innerHTML;
例如:

y = data; //data is string value "First"
将此值更改为新字符串“first”>>此处f较小

y2 = "first"
现在,当两者都是同一类型时,它区分大小写

if(y==y2)
因此,价值观是

First == first 
这将是
false

因此,请确保在内部html中传递数据。并确保没有添加一些空白

我希望这能解决问题


如果修改代码后未解决,请进行回复:)

如果您正在比较的内容实际上是字符串,
=
==
没有丝毫区别。在任何情况下,这和OP的问题无关,他们正在比较DOM元素。谢谢。它在做同样的事情——它认为这两个元素在应该相等的时候并不相等。我把我的JS块放在上面。@user2155320:两个不同的元素永远不相等。这就是我回答的重点。也谢谢MarmiK,但我不明白你在说什么。你说:First//是指变量“First”是什么意思?或者这只是你说的第一句话?y=数据;//你在重复我的密码吗?或者告诉我这是原始数据而不是字符串?将此更改为y“第一”;//你想让我把变量改成字符串“first”?还是别的什么。。。?我不知道你的意思。然后你可以检查第二个如何检查它?我告诉第一个平均值第一步,第二个平均值第二步,然后y=数据必须更改,所以请将y=“First”//设置为字符串值。对不起,如果你不能理解清楚:)我会说得更清楚,我想这是匆忙的。非常感谢。
First == first