在javascript中比较字符串的麻烦

时间:2013-03-11 06:25:12

标签: javascript

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

3 个答案:

答案 0 :(得分:3)

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

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

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

(例如,使用innerHTML元素,其中一个字符串。)虽然我认为我可能会将值保留在变量中而不是返回到DOM对他们来说。

答案 1 :(得分:0)

例如:

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

将此值更改为新字符串&#34; first&#34; &GT;&GT;这里f很小

y2 = "first"

现在,当两者属于同一类型时,它的区分大小写。

if(y==y2)

所以值是......

First == first 

将是false

因此请确保您在内部html中传递的数据。并确保你没有为它添加一些空白区域..

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

在修改代码后如果没有解决则回复:)

答案 2 :(得分:-1)

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

if(first===second)

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

 first = document.getElementById("youTyped").innerHTML;