if语句在javascript中不起作用

时间:2015-12-28 17:21:24

标签: javascript if-statement

我希望在某些条件下尝试使用[query findObjectsInBackgroundWithBlock:^(NSArray* array, NSError* error) { if(!error) { if([array count] > 0) { PFObject* relationship = [array objectAtIndex:0]; if([relationship.objectId length] > 0) { if([[relationship objectForKey:@"initiatedBy"] isEqualToString:parseID]) // relationship initiated by current user -youLike { [youLike addObject:relationship]; NSLog(@"youLike added"); } else { [likeYou addObject:relationship]; NSLog(@"likeYou added"); } } else NSLog(@"Custom error when cycling through user relationships: objectId is nil"); } else { NSLog(@"Custom error when cycling through user relationships: Relationship at index %d could not be found in database", i); } } else { NSLog(@"Error when cycling through user relationships: %@", error); } } 方法。 但它似乎无论如何都不起作用。

clearInterval()

我不知道为什么当左边财产的价值是" 600"时没有发生任何事情。 非常感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

现在它的编写方式,move尚未被调用,因此此代码无需检查:

if (parseInt(list.style.left) == 600) {
    clearInterval(myVar); 
}

相反,在move()内添加该条件并让它结束自己的执行:

var myVar; // change scope to outside of the below function.
window.onload = function(){
    var list = document.getElementById("list");

    list.style.position = "relative";

    list.style.left = 0;

    var move = function(){
        list.style.left = parseInt(list.style.left) + 200 + "px";  
        demo[0].innerHTML = parseInt(list.style.left);

        if (parseInt(list.style.left) == 600) {
            clearInterval(myVar); 
        }
    } 
    myVar = setInterval(move,1000);
}

也可能希望使范围更加全局化(或者至少使其更明显,可以在下面的函数之外进行修改)。无论如何它都会被悬挂,但是更加清晰将有助于以后的维护。

答案 1 :(得分:0)

您的if语句仅在onload事件中调用一次。在那之后,它永远不会被再次调用,所以它永远不会有机会清除间隔。如果您将move函数更改为以下内容:

var move = function(){
    list.style.left = parseInt(list.style.left) + 200 + "px";  
    demo[0].innerHTML = parseInt(list.style.left);

    // Check to see if we should clear our interval
    if (parseInt(list.style.left) == 600) {
        clearInterval(myVar); 
    }
} 

每次调用move时都会进行检查。如果if语句中的条件变为true,它将清除你的间隔。

答案 2 :(得分:0)

您可以这样做:

window.onload = function(){
    var list = document.getElementById("list");
    list.style.position = "relative";
    list.style.left = 0;

    var move = function(){
        if (parseInt(list.style.left) == 600) {
            clearInterval(myVar); 
        }
        list.style.left = parseInt(list.style.left) + 200 + "px";  
        demo[0].innerHTML = parseInt(list.style.left);
    } 

    var myVar = setInterval(move,1000);
}  

答案 3 :(得分:0)

list.style.left返回一个字符串,可以跟随一个单位(px,pt ....)。它甚至可能是一个百分比。