2017-03-17 79 views
-2

我想輸入的值,並存儲到一個變量和輸出.VAL()在另一個元素,像這樣:存儲.VAL()一個變量中不起作用

<input type="text" name="abc" /> 
<button>Click me</button> 
<p></p> 
$(document).ready(function() { 
    var a = $('input').eq(0).val(); 
    var btn = $('button'); 

    btn.click(function() { 
    $('p').text(a); 
    }); 
}); 

這段代碼不起作用。 此代碼,但是,並完美地工作:

$(document).ready(function() { 
    var a = $('input').eq(0); 
    var btn = $('button'); 

    btn.click(function() { 
    $('p').text(a.val()); 
    }); 
}); 

當我把val()在點擊功能,當我嘗試存儲val()變量裏面沒有工作,爲什麼工作?

+2

因爲你的輸入沒有值,所以試試這個''這會起作用 – guradio

+0

假設你需要設置'a'值在點擊處理程序中,用戶在輸入內容中鍵入內容...? –

回答

2

在你的第一個例子,你在文件準備

var a = $('input').eq(0).val(); //which is blank on document ready 

在第二個例子,你取取輸入的值按鈕值點擊

$('p').text(a.val()); //a is a reference to your input tag 

因此,您的第一個片段失敗,以及其他作品。

從技術上講,您的第二個代碼片段更具有意義,因爲它可以重用。可重複使用的術語,如果您想對該input標籤運行任何其他方法,那麼如果最後有.val(),則無法執行此操作,因此最好對該元素進行引用,然後運行方法如果需要的話,就像你在第二段中做的那樣。

要解決這個問題,您需要設置一些默認值,或者您需要使用第二個代碼段。


此外,只是一個提示。忽略使用eq()並使用id來代替特定標籤。如果你在你的頁面上添加更多input標籤,並且錯誤地在你預期的標籤之前添加了input標籤,那麼你最終可能會陷入混亂。

+0

謝謝! 現在明白了,當然它必須是這樣的:)我坐在這裏,想知道這可能是怎麼回事,但用清晰的答案是有道理的。 –

0

由於您的輸入沒有價值開始。在點擊之前,你可能已經在輸入上輸入了一些東西,所以在點擊後它有價值。

試試這個<input type="text" name="abc" value="string value"/>這將工作。

+0

謝謝!說得通! –