2013-07-03 26 views
0

我最近從常規JavaScript提示切換到jQuery插件'Alertify'提示。但是,當我將變量定義爲提示的響應,並在稍後的警報中使用該變量時,它會打印'[object Object]'。經過幾個小時的谷歌搜索和測試,我仍然沒有拿出一個答案。「[對象對象]」代替變量字符串在Alertify提示中使用

這是我的代碼:

do { 
    var fullLoop = false; 
    var user = alertify.prompt("What is your name?", function (e, str) { 
     if (e) { 
      user.toUpperCase(); 
      if (str.length === 0) { 
       alertify.alert("Please enter your name."); 
       fullLoop = true; 
      } 
     } else { 
      alertify.alert("Please enter your name."); 
      fullLoop = true; 
     } 
    }, "Name"); 
    do { 
     var bestLoop = false; 
     var best = alertify.prompt("So " + user + ", what is your greatest ability, STRENGTH, SPEED, or SMARTS?", function (e, str) { 
     if (e) { 
      best.toUpperCase(); 
      if (best === "STRENGTH" || best === "SPEED" || best === "SMARTS") { 
      var offset = options.indexOf(best); 
      if (offset != -1) { 
       options.splice(offset, 1); 
      } 
     } else { 
      alert("Please choose either STRENGTH, SPEED, or SMARTS as your greatest ability."); 
      bestLoop = true; 
     } 
     } else { 
      alertify.alert("Please choose either STRENGTH, SPEED, or SMARTS as your greatest ability."); 
      bestLoop = true; 
     } 
    }, "Greatest Ability"); 
    } while (bestLoop); 
    alertify.alert("Great! So " + best + " is yor greatest ability."); 
} while (fullLoop); 

你可以看到我遇到here錯誤。

我也注意到我的if有關字符串的陳述被忽略,我假設有一個連接,但它是什麼?我沒有發現任何錯誤,所以我是否錯誤地使用了Alertify?

+0

據我所看到的,你的插件的使用是錯誤的,'VAR用戶= alertify.prompt(「什麼是你的名字?「,函數(e,str)'不返回輸入的用戶名,它返回一個alertify對象的實例 –

回答

0

您對alertify插件的使用是錯誤的,它的提示方法是一個異步方法,並且所有使用該方法的操作都必須在回調中完成。

的縮小版本如下

var options = ["STRENGTH", "SPEED", "SMARTS"]; 
alertify.alert("Before we begin our journey, let's learn a little bit about you."); 

alertify.prompt("What is your name?", function (e, str) { 
    if (e) { 
     var user = str.toUpperCase(); 

     alertify.prompt("So " + user + ", what is your greatest ability, STRENGTH, SPEED, or SMARTS?", function (e, str) { 
      if (e) { 
       var best = str.toUpperCase(); 
       if (best === "STRENGTH" || best === "SPEED" || best === "SMARTS") { 
        var offset = options.indexOf(best); 
        if (offset != -1) { 
         options.splice(offset, 1); 
        } 
        alertify.alert("Great! So " + best + " is yor greatest ability.");   
       } else { 
       } 
      } else { 
      } 
     }, "Greatest Ability"); 
    } else { 
    } 
}, "Name"); 

演示:Fiddle

+0

這很好。感謝您的幫助! – weirdalexv

+0

@ weirdalexv:有問題在OSX上爲FF運行;然而,Safari的工作原理 - 請注意,這個插件並不爲人所知,並且沒有得到徹底的支持 – vol7ron

0

我不太瞭解alterify,但它看起來像你試圖顯示一個JSON對象。試試JSON.stringify(用戶),看看你得到什麼。這可能是這樣的

{ "Name": "Paul" } 

如果是這樣,你會再想要做

alertify.prompt("So " + user.Name + ", what is your greatest ability, STRENGTH, SPEED, or SMARTS?" 

也許

alertify.prompt("So " + JSON.stringify(user.Name) + ", what is your greatest ability, STRENGTH, SPEED, or SMARTS?" 

希望這有助於!

+0

我試過了,他們只是返回undefined而不是[object Object] – weirdalexv

+0

.prompt(「所以」+ JSON.stringify(用戶)+「,你最大的能力,強度,速度或智能是什麼?」 – Russbear

+0

哇,沒關係。這根本不起作用。 – Russbear

相關問題