2012-04-21 126 views
0

我有這個js ....如何向變量添加字符串;

$("#form").submit(function(){ 
var answerlist = "first"; 
var answerlist = answerlist + "," + $("#get_answer").attr("value"); 
alert(answerlist); 
}); 

我試圖用id #get_answeranswelist變量添加輸入字段的值....

我期望answerlist現在= first move //其中輸入字段的值是move並且是結果是成功的...

現在我第二次嘗試向answerlist變量添加另一個值... 。

on
我希望結果會是first move on

,但是當我檢查使用alert()返回first on

有人可以幫助我plsss?

我想是的值(字符串)遞增到變量answerlist

answerlist = "first"; 
answerlist = "first move"; 
answerlist = "first move on"; 

回答

1

你初始化變量的值在函數內部,那麼自然,當它再次呼籲該值將返回到第一

在函數之外初始化它。

+0

謝謝先生....你讓我明白......非常感謝你......我忘了把變量answelist放在函數之外...... – 2012-04-21 12:42:32

+0

這不會像預期的那樣工作,如果同一個變量已經在其他地方了。 JavaScript使用函數級別的範圍,因此您的初始化變量很可能會在全局範圍內結束。基本上,問題與其他語言中的全局變量相同:*意想不到的後果*。 – 2012-04-22 10:28:12

1

這應該這樣做

$("#form").submit(function(){ 
    var answerlist = "first"; 
    var answerlist = answerlist + "," + $("#get_answer").val(); 
    alert(answerlist); 
}); 

編輯:

DEMO

+0

仍然沒有工作... – 2012-04-21 12:35:23

+0

用dmeo更新了我的答案 – Dhiraj 2012-04-21 12:37:08

+0

它不是我正在尋找的先生...請仔細閱讀我的文章... – 2012-04-21 12:38:40

0

嘗試......

var answerlist = answerlist + "," + $("#get_answer").val(); 
+0

不是我一直在尋找的答案... – 2012-04-21 12:38:54

+1

聲明變量函數之前的函數! ! var answerlist =「first」; – Vaishu 2012-04-21 12:46:23

2

隨着你在這裏的片段,你永遠不會有超過「第一,移動」,因爲你永遠在第二行設置答案列表,它只會在表單提交時生成。所以除非您的輸入值是「繼續前進」,否則不會顯示預期的結果。

你可以把answerlist變量的功能範圍之外,如果你想,每當輸入被轉換添加值...

var answerlist = "first"; 
$("#form #get_answer").change(function(){ 
    answerlist = answerlist + "," + $("#get_answer").val(); 
}); 
$("#form").submit(function(){ 
    alert(answerlist); 
}); 

但是,請注意,您將無法刪除這個清單中的任何內容相反,如果您需要具有刪除項目的潛力,您可能希望使用數組並推送/彈出這些值。 JavaScript Array Ref

+0

我發現問題先生..在@mightyuhu的幫助下....我只需要做的就是把函數外的answerlist變量...但仍然謝謝你的主席先生的幫助.. – 2012-04-21 12:44:07

3
(function() { 
    // to isolate it from rest of the code 

    var handler = function (target) { 
     var list = 'first'; 
     return function() { 
      list = list + target.value; 
      alert(list); 
     }; 
    }, 
    action = handler(document.getElementById('get_answer')); 

    $(document.getElementById('form')).submit(action); 

}()); 

這種結構被稱爲「封閉」,在JavaScript語言中最重要的功能,它的一個,你應該學習如何使用它。 This lecture可能會有所幫助。

並請停止使用$.attr()爲瑣碎的事情。

+0

謝謝你分享這個 – Dhiraj 2012-04-21 13:14:56