我在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>
答案 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;