2011-09-28 41 views
0

我已經撥出了一些代碼來爲新網站的啓動創建倒數計時器。計時器本身使用自定義字體,效果很好。無法使用if/else javascript語句加載新的url - help?

然而,當timesup的if/else語句是真實的,去「別人」,我不能讓任何其他功能,從方式除了工作,你看到它下面:

function formatresults(){ 
    if (this.timesup==false){//if target date/time not yet met 
     var displaystring="<div class='row'><div class='col'> "+arguments[0]+" </div> <div class='thincol'>&#149;</div> <div class='col'> "+arguments[1]+" </div> <div class='thincol'>&#149;</div><div class='col'> "+arguments[2]+" </div> <div class='thincol'>&#149;</div> <div class='col'> "+arguments[3]+" </div> </div>" 
    } 
    else { 
     var displaystring = "BAR" 
    } 
    return displaystring 
} 

如果我將var displaystring更改爲window.location(在倒計時結束時加載完整站點),定時器停止工作。

我知道這是由於在某種程度上對javascript的基本誤解,但在所有誠實中,我已經開發了使用javascript和jquery和mootools等庫的網站,並且在很長時間內沒有像這樣打磚牆。

如果您有任何建議,請與我分享!

提前

回答

1

看起來像你有一個嚴重的問題沒有格式化瘋狂正在進行。您應該正確縮進並格式化您的JavaScript並用分號終止每條語句:

function formatresults() { 
    var displaystring = ""; 

    if (this.timesup == false) { // if target date/time not yet met 
     displaystring = "<div class='row'><div class='col'> " 
        + arguments[0] 
        + " </div> <div class='thincol'>&#149;</div> <div class='col'> " 
        + arguments[1] 
        + " </div> <div class='thincol'>&#149;</div><div class='col'> " 
        + arguments[2] 
        + " </div> <div class='thincol'>&#149;</div> <div class='col'> " 
        + arguments[3] 
        + " </div> </div>"; 
    } else { 
    displaystring = "CRAP"; 
    window.location.href = "http://example.com/"; 
    } 

    return displaystring 
} 

上面的代碼應該工作得很好。現在我不知道爲什麼在設置displaystring之後要重定向用戶,因爲這會中止當前的頁面執行,但仍然;上面的代碼應該可以工作。

正如Ben Lee寫的;你不應該在做window.location.href這個函數的變化,而是在調用formatresults()的函數中,所以formatresults()只做它所說的,它是格式化結果。這是我如何解決它:

function formatresults() { 
    var result = { success : false, value : null }; 

    if (this.timesup) { // if target date/time not yet met 
     result.success = false; 
     result.value = "Time's up!"; 
    } else { 
     result.success = true; 
     result.value = "<div class='row'><div class='col'> " 
        + arguments[0] 
        + " </div> <div class='thincol'>&#149;</div> <div class='col'> " 
        + arguments[1] 
        + " </div> <div class='thincol'>&#149;</div><div class='col'> " 
        + arguments[2] 
        + " </div> <div class='thincol'>&#149;</div> <div class='col'> " 
        + arguments[3] 
        + " </div> </div>"; 
    } 

    return result; 
} 

// ... 

var result = formatresults(); 

if (!result.success) { 
    window.location.href = "http://example.com/"; 
} else { 
    // Do something with result.value 
} 
+0

asbjonu ...這是我的問題的答案。非常感謝您花時間幫助我。我完全意識到代碼有點亂,所以我做的第一件事就是整理它。在'displaystring'變量下放置'location.href'完全解決了我的問題。如果有人想使用計時器代碼,我只是給我發電子郵件! – gimme5

0

非常感謝爲什麼不只是else子句中立即重定向?

function formatresults() { 
    if (this.timesup == false) { 
     return "<div class='row'><div class='col'> "+arguments[0]+" </div> <div class='thincol'>&#149;</div> <div class='col'> "+arguments[1]+" </div> <div class='thincol'>&#149;</div><div class='col'> "+arguments[2]+" </div> <div class='thincol'>&#149;</div> <div class='col'> "+arguments[3]+" </div> </div>"; 
    } else { 
     window.location.href = "http://url.to.full.site"; 
    } 
} 

真的檢查不屬於formatresults,你應該嘗試把它搬出去到任何函數調用formatresults。因爲我沒有你的調用代碼的樣本,所以我只是這樣做了演示的目的。

+0

嗨本,非常感謝您的答覆。我在介紹'window.location.href'函數時遇到了問題,而沒有包含原始的'var displaystring'部分,如下所示。非常感謝,我感謝您花時間幫助我! – gimme5