2015-12-21 56 views
0

我有我的想法,我想通過使用函數參數和對象來實現,但它不能按預期工作。Javascript object and parameters reference from the HTML

首先HTML代碼:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Main</title> 
     <script type="text/javascript" src="scripting.js"></script> 

    </head> 
    <body> 
     <div > 
      <form id='radio'> 
       <input type="radio" name="choice" onClick="text(this.value)" value="list"> 
       <input type="radio" name="choice" onClick="text(this.value)" value="box"></form> 
      <h1 id="title">" "</h1> 
      <p id="description"></p> 
     </div> 
    </body> 
</html> 

這是很簡單的,我會用單選按鈕的值作爲我的javascript text()函數的參數。

這裏是我的JavaScript代碼:

var choices = document.getElementsByName('choice'); 
var list = { a : 1 , b : 'Hi' }; 
var box = { a : 2, b : 'Hello'}; 


function text(choice) { 

    var i; 
    for (i = 0; i < choices.length; i += 1) 
    { 
     if(choices[i].checked) 
     { 
      document.getElementById('title').innerHTML = choice["a"]; 
      document.getElementById('description').innerHTML = choice["b"]; 
     } 
    } 

} 

我已經創建了兩個對象具有相同的名稱從HTML代碼的單選按鈕。接下來,在我的函數中做了一個for循環來檢查單擊哪個單選按鈕。根據公式,標題和段落標籤應該在各自的標籤中顯示對象內容。當我只是輸入參數作爲普通值時,它會打印出單選按鈕的值。但是,我使用該參數作爲對象變量的引用。示例:

function parameter choice = "list"; 
document.getElementById('title').innerHTML = choice["a"]; 

而不是獲取顯示的值。結果我得到「未定義」。

有人可以幫忙嗎?

+0

選擇是一個字符串,所以只需使用'... = choice;' – Ibu

+0

已經嘗試過。同樣的結果 –

回答

0

兩種方法來解決這個問題。如果保持目前的變量,而現在,他們將(在窗口對象)全球,然後使用此:

var list = { a : 1 , b : 'Hi' }; 
var box = { a : 2, b : 'Hello'}; 
var choice = 'list'; 

console.log(window[choice]); 

通知我們把選擇的支架,因爲列表和框是窗口的屬性。因爲選擇等於'list',所以window [choice],window ['list']和window.list都引用同名的list對象。

另一種方法是將一個對象名單及框:

var types = { 
    list: { a : 1 , b : 'Hi' }, 
    box: { a : 2, b : 'Hello' } 
}; 

var choice = 'list'; 

console.log(types[choice]); 

我更喜歡把一切都在全球/ window對象這個方法。

+0

請記住,我的結果應顯示在HTML5網站上,而不是控制檯中。 另外,選擇參數不是一個現有的變量,它是從HTML5函數text(this.value)引用一個值...在我放入原始文章的例子中,我的意思是this.value ='list '作爲函數文本的參數(選擇);並在JavaScript中 - 選擇 - 將代表整個函數中的值'列表'。我嘗試了你的選項類型[選擇],但它作爲結果拋出:[object Object]。 –

+0

我只是告訴你如何使用變量來獲取對象,比如window [choice]。由於列表和框是對象,因此您需要像window [choice] .a或window [choice] .b一樣引用它。我想我會讓你拿出實際的代碼,但讓我們知道如果你需要更多的幫助來獲得實際的結果。 – Will

相關問題