我在一些Javascript代码中有一个for循环,似乎无法弄清楚为什么它没有执行。我有一些console.log语句,我试图看看变量是否正在捕获我需要它们。但是,当我运行代码时,我看不到来自console.log命令的任何输出。这里有什么我想念的吗?请参阅下面的Javascript代码:
var strArry = [];
for(var i=0; i<obj[0].srcLanguageSentence.text; i++)
{
// create variables representing substrings of the Source language Sentence
var s1 = text.substring((obj[i].srcLanguageSentence.roles[i].beginOffset - obj[i].srcLanguageSentence.roles[i].beginOffset),(obj[i].srcLanguageSentence.roles[i].beginOffset - 1));
var s2 = text.substring(obj[i].srcLanguageSentence.roles[i].beginOffset,obj[i].srcLanguageSentence.roles[i].endOffset);
var s3 = text.substring(obj[i].srcLanguageSentence.roles[i].endOffset,obj[i].srcLanguageSentence.text.length);
strArry.push(s1)
strArry.push(s2)
if(i == obj[0].srcLanguageSentence.roles.length)
{
strArry.push(s3);
}
text = s3;
console.log("s1: " + s1);
console.log("s2: " + s2);
console.log("s3: " + s3);
console.log(s1+s2+s3);
}
答案 0 :(得分:1)
您的问题是for循环中的条件语句:
i < obj[0].srcLanguageSentence.text;
你说这个循环应该运行只要 i 小于 obj [0] .srcLanguageSentence.text ,这看起来是错误的。
我想你要么为obj中的每个对象运行for循环(当你在代码中使用 obj [i] 时)?如果是这样,请将其写成:
for (var i=0; i < obj.length; i++)
或者,如果是文本的长度:
for (var i=0; i < obj[0].srcLanguageSentence.text.length; i++)
答案 1 :(得分:1)
对于不完整的代码段,几乎没有任何详细的建议,尽管看起来问题与您的条件语句有关。您可能想要尝试的一般方法,不仅针对此特定情况,还针对其他情况,还要添加更多console.log来识别问题,假设您不想使用chrome调试器。例如,
var strArry = [];
console.log(obj[0].srcLanguageSentence.text);
for(var i=0; i<obj[0].srcLanguageSentence.text; i++)
{
console.log("enter:"+i);
// create variables representing substrings of the Source language Sentence
var s1 = text.substring((obj[i].srcLanguageSentence.roles[i].beginOffset - obj[i].srcLanguageSentence.roles[i].beginOffset),(obj[i].srcLanguageSentence.roles[i].beginOffset - 1));
console.log('s1:'+s1);
var s2 = text.substring(obj[i].srcLanguageSentence.roles[i].beginOffset,obj[i].srcLanguageSentence.roles[i].endOffset);
var s3 = text.substring(obj[i].srcLanguageSentence.roles[i].endOffset,obj[i].srcLanguageSentence.text.length);
strArry.push(s1)
strArry.push(s2)
if(i == obj[0].srcLanguageSentence.roles.length)
{
strArry.push(s3);
}
text = s3;
console.log("s1: " + s1);
console.log("s2: " + s2);
console.log("s3: " + s3);
console.log(s1+s2+s3);
}
希望它有所帮助。
答案 2 :(得分:0)
由于你的陈述
,你的循环不成功for(var i=0; i<obj[0].srcLanguageSentence.text; i++)
这里的for loop
你需要在数字形式中放入一个条件而不是字符串或文本形式。因此,在循环语句中替换条件,绝对会在循环中获得成功。