1

我在 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.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>
4

3 回答 3

3

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

至少,你的最后三行应该是这样的:

first = document.getElementById("youTyped").innerHTML;
second = document.getElementById("typeThisWord").innerHTML;
if(first==second) correct=true;

(例如,使用innerHTML元素的 ,它一个字符串。)虽然我认为我可能会将这些值保留在变量中,而不是为它们返回 DOM。

于 2013-03-11T06:26:46.930 回答
0

例如:

y = data; //data is string value "First"

将此值更改为新字符串 "first" >> 这里 f 很小

y2 = "first"

现在,当两者都是相同类型时,它区分大小写。

if(y==y2)

所以价值观是..

First == first 

那将是false

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

我希望这可以解决问题。:)

如果修改代码后没有解决,请回复评论:)

于 2013-03-11T06:53:24.803 回答
-1

使用它而不是(first==second):

if(first===second)

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

 first = document.getElementById("youTyped").innerHTML;
于 2013-03-11T06:27:12.143 回答