我已经摆弄这个东西太久了,似乎不能让它正常工作。我遇到的问题是,我在for循环中丢失了增量变量的值,特别是当它进入其中的if语句时。理想情况下,我希望遍历一个数组,直到找到正确的值,将一个变量附加到该值,并在for循环外部使用它。这是我正在使用的数组的结构。
var dXId = [
{url:"url1", dId:"id1"},
{url:"url2", dId:"id2"},
{url:"url3", dId:"id3"}
];
下面是我运行所有内容的循环:
for(i=0; i < dXId.length; i++) {
if (dXId[i].url == currentUrl){
var dataXuId = dXId[i].dId;
break;
}
}
在if语句中,增量'i‘变量始终恢复为0。奇怪的是,dXIdi.url正确地出现了,但是dXIdi.dId拉出了第一个条目,在那之后'i‘似乎就消失了。我确信有一个非常简单的解决方案,但是javascript似乎总是给我带来麻烦。
发布于 2014-07-10 20:20:07
您在for循环中设置了dXIdi.url = currentUrl,而不是与'==‘进行比较。这可能是问题的一部分。
编辑
根据埃里克的建议..。
==运算符是松散地比较事物的价值,而===是严格地比较事物的价值和类型。
示例:给定x=10;
x == '10' // true
x == 10 // true
x === '10' // false
x === 10 // true
发布于 2014-07-10 20:24:48
您的if语法有误。您正在将currentUrl
的值赋给变量dXId[i].url
if (dXId[i].url = currentUrl){
...
}
应将其更改为===
以比较字符串值。
if (dXId[i].url === currentUrl){
...
}
在那之后,它就能工作了!这里还有一个例子:
例如,考虑以下代码片段:
var foo = 1, // change to 0 and console.log will not be displayed
bar; // undefined
// Assigning value of foo to bar
if (bar = foo){
// Will print out 1
console.log("bar is: " + bar);
}
将导致将以下输出打印到控制台:
栏是:1
原因是if (bar = foo){
等于if (1){
,它允许程序在if块中继续:) ...如果foo使用值0,则不会显示console.log。(这至少是我用谷歌chrome测试过的行为。)
关于这一点的示例
https://stackoverflow.com/questions/24685521
复制