2013-07-27 159 views
0

我對學習Javascript和Jquery都很新。你可以運行JS if語句和for循環內的一行JQuery嗎?

在我創建的網站中,我試圖在JQuery行中插入一個Javascript if語句和for循環。最後一次確認無法運行。我懷疑這是導致問題的if語句。我怎樣才能解決這個問題?這是我的代碼的樣子。

$(document).ready(function() { 
    $(".button3").click(function() { 
     var lastname = $('#lastnameresponse').val(); 
     confirm("You're last name is" + " " + lastname); 
     if (userResponse = "girl") { 
      for (var i = 0; i <= girlnames.length; i++) { 
       confirm("Your future daughter's name is" + " " + random + " " + randomagain + " " + lastname); 
      }) 
    }); 
+0

這看起來不像完整的代碼。什麼是'userResponse'? – mohkhan

+1

'userResponse =「女孩」'將'女孩''分配給'userResponse'。使用'=='或'==='。您之前所做的同一錯誤:http://stackoverflow.com/a/17002680/139010 –

+1

您的for循環之後還有一個雜散括號。 – Austen

回答

2

有一個很多一點不你的代碼很有意義。

首先,什麼是userResponse?這在什麼地方得到了定義,它在哪裏設置?你有沒有在調試器下進行驗證,確實是等於爲「女孩」?

其次,你可能是指使用比較等於不是分配等於這裏:

if (userResponse = "girl") { // This should be == 

但是,這不應該阻止塊運行。實際上,它會強制阻止總是運行,因爲「女孩」是真實的。

三,什麼是girlnames?它是一個數組嗎?這個定義在哪裏?你確認它確實包含有效的項目嗎?

最後,我相信你的for循環是不正確的:

for (var i = 0; i <= girlnames.length; i++) { 

應該是:

for (var i = 0; i < girlnames.length; i++) { 

數組從0開始,因此girlnames[girlnames.length]是不是一個有效的項目。

但是,考慮到你不使用i變量在循環的任何地方,這同樣不應該實際上引起任何錯誤。

我會通過使用腳本調試器(通常F12在現代瀏覽器)線通過您的代碼行步驟,並在設置一個斷點:

var lastname = $('#lastnameresponse').val(); 

然後驗證每一行行爲正確。如果仍然無法工作,則需要發佈更多代碼,以便我們更好地瞭解發生了什麼。

UPDATE:

基於您的評論:

這裏就是userResponse變量定義: $(文件)。就緒(函數(){$( 「#girlimg」 ).click(function(){var userResponse = prompt(「確認您選擇的性別」)toLowerCase; $('html,body')。animate({scrollTop:$(「。LastName」)。offset ).top}, 2000);

似乎userResponse得到了#girlimg標籤單擊處理程序中聲明:

$("#girlimg").click(function() { 
    // Everything declared here is local to this function 
    var userResponse = confirm(); // local variable 
}); 

因此,它不會在.button3單擊處理程序訪問。您需要在兩個函數均可訪問的範圍內聲明userResponse。也許是全局的(這在JavaScript中是皺眉頭的),或者在你的$(document).ready()代碼中,只要在該塊中定義了兩個單擊事件處理程序。

+0

嗨邁克, 這是一個我有傾向的錯誤。不過,我確實做了這個改變,不幸的是代碼仍然無法工作。任何其他想法? – user2466886

+0

當然。 userResponse定義在哪裏?你確定它確實等於*女孩「嗎?'girlnames'定義在哪兒?它是一個數組嗎?你確認它有多個值可以迭代嗎?你是否嘗試過使用腳本調試器來調試這段代碼? –

+0

girlnames是一個數組, 這裏就是userResponse變量被定義: $(文件)。就緒(函數(){ \t $( 「#girlimg」)點擊(函數(){ \t變種userResponse =提示(「確認您選擇的性別」)。toLowerCase; $('html,body')。animate({scrollName}){top(頂部 },2000); – user2466886

0

以下語句不包含正確的JavaScript比較運算符

等於寫入==

if (userResponse = "girl") { 

參考一下here

2

第一:它是YourYou're :)

其次,userResponse是不確定的。也許它是在別的地方定義的。

爲了進行比較,請使用==運算符。

你確定是你想要做的嗎?我看你在那裏也有confirm。 使用confirm這樣的:

$(".button3").click(function() { 
    var lastname = $('#lastnameresponse').val(); 
    // confirm() returns true or false, depending on the clicked button 
    is_confirmed = confirm("You're last name is" + " " +lastname); 
    if (true == is_confirmed) { 
     for (var i = 0; i <= girlnames.length; i++) { 
      confirm ("Your future daughter's name is" + " " + random + " " + randomagain + " " + lastname); 
     } 
    } 
}); 

girlnames也沒有這裏定義(也許是別的地方)。對於randomrandomagainrandomagain

至於編寫JavaScript「in」jQuery:沒有這樣的問題。 jQuery是一個用Javascript編寫的庫,提供有用的功能來簡化開發。

+0

對於確認如何工作,我仍然有點困惑。你的建議確實讓代碼運行,但沒有得到最後的確認(在for循環之後)運行。 所有其他變量都是先前定義的。 – user2466886

+0

最後一個'confirm()'不起作用,除非'girlnames'被定義爲一個至少有一個項目的數組。閱讀javascript中的確認和數組 – ep0

0

您忘記關閉一些箭頭,當你把任何方式:

if (userResponse ="girl"){...} 

設置userResponse變量設置爲「姑娘」,以及傳遞值的變量僅
在userResponse是檢查等於「女孩」你應該把

if (userResponse =="girl") 

您的最終代碼看起來像這樣

$(document).ready(function(){ 
$(".button3").click(function() { 
var lastname = $('#lastnameresponse').val(); 
confirm("You're last name is" + " " +lastname); 
if (userResponse ="girl") { 
    for (var i = 0; i <= girlnames.length; i++) { 
    confirm ("Your future daughter's name is" + " " + random + " " + randomagain + " " + lastname); 
    }}} 
) 
}); 

p.s:你忘了關閉太多的箭頭