2013-02-26 96 views
0

我想改變一些基於單選按鈕選擇使用jQuery的文本,但我似乎無法得到它的工作。這是我的代碼,因爲它代表:jQuery:使用.text()顯示數組值

HTML

<input type="radio" name="finish_id" id="1" value="1" checked /> 
<label for="1" id="veteran"></label> 

<input type="radio" name="finish_id" id="2" value="2" /> 
<label for="2" id="elite"></label> 

<input type="radio" name="finish_id" id="3" value="3" /> 
<label for="3" id="legendary"></label> 

<span id="finish_name"></span>

JS

// Set variables 
    var finish[] = "something"; 
    var finish[] = "something else"; 
    var finish[] = "another thing"; 

// Change finish name based on radio selection 
    $(document).ready(function() { 
     $("input[name='finish_id']").change(function() { 
      $('#finish_name').text(finish[$(this).val()]); 
     }).change(); 
    }); 

我可能路要走與數組數爲$(this).val(),我不知道你是否可以這樣選擇,但即使我將其設置爲$('#finish_name').text(finish[1]);我收到一個unexpected token [錯誤。如何使用.text()的數組值?

+0

的數組從0開始,所以讓你的值爲0,1,2 – 2013-02-26 18:28:14

+0

添加元素到數組使用push。 finish.push('你的var');並且在編寫JavaScript代碼時保持您的Firebug/Chrome開發者工具啓用。 :) – HamidRaza 2013-02-26 18:32:30

+1

我添加了一個html5風格的實現,如果您感興趣,我的答案會更清晰。 – gbtimmon 2013-02-26 18:46:50

回答

1

您有幾個問題:

  1. 你不要在JavaScript中聲明這樣的數組。聲明一個名爲finish的變量。詳細瞭解MDN's article上的陣列。
  2. 你有一個錯誤的錯誤。在JavaScript中,數組索引是基於0的,這意味着第一個索引是0.您可以通過從更改事件內部的單選按鈕值中減去1來解決此問題。
  3. 手動觸發更改事件的方式會導致事件觸發最後一個單選按鈕。您可以使用.first方法選擇第一個單選按鈕,並在該元素上僅觸發的更改事件

    更新:更妙的是,你可以使用在checked單選按鈕.filter只有呼叫改變(如下更新)


// Set variables 
var finish = ['something', 'something else', 'another thing']; 

// Change finish name based on radio selection 
$(document).ready(function() { 
    $("input[name='finish_id']").change(function() { 
     $('#finish_name').text(finish[$(this).val()-1]); 
    }).filter(":checked").change(); 
}); 

例子:http://jsfiddle.net/YnBa3/1/

+0

謝謝,因爲你可以告訴我相對較新的Javascript .. 你和@gbtimmon都是一個很好的幫助:) – 2013-02-26 18:34:33

+0

@JoshMountain:沒問題!每個人都是新的一次:)很高興我能幫上忙。 – 2013-02-26 18:35:40

3

那不是你如何聲明數組在javascript

嘗試

var finish = ["something", 
       "something else", 
       "another thing"]; 


// Change finish name based on radio selection 
$(document).ready(function() { 
    $("input[name='finish_id']").change(function() { 
     $('#finish_name').text(finish[$(this).val()]); 
    }).change(); 
}); 

或者使其更具可擴展性/ HTML5去年秋季....

<input type="radio" name="finish_id" value="1" data-message='something' onchange="javasript:$('#finish_name').text(finish[$(this).val()])"> 
<input type="radio" name="finish_id" value="2" data-message='something else' onchange="javasript:$('#finish_name').text(finish[$(this).val()])"> 
<input type="radio" name="finish_id" value="3" data-message='another thing' onchange="javasript:$('#finish_name').text(finish[$(this).val()])"> 
<span id="finish_name"></span> 

http://jsfiddle.net/erPQA/3/