2013-05-05 43 views
0

我的代碼無法正常工作,當我嘗試從單選按鈕和下拉菜單獲取值時,JS功能出現問題。收音機和DropDown菜單不工作?

誰能告訴我什麼是錯的?

CSS:

#mytable { 
    width:400px; 
    border: 1pt solid black; 
} 
#mytable tr { 
    height:50px; 
} 
#mytable td { 
    width:20%; 
    border: 1px solid black; 
} 

的Javascript:

function colorit(){ 
    var letter; 
    if(document.getElementsByName("plusSign").checked) letter = "+"; 
    else if(document.getElementsByName("letterX").checked) letter = "X"; 
    else if(document.getElementsByName("letterH").checked) letter = "H"; 

    var colorList = document.getElementsByName("color"); 

    var x = document.getElementById('mytable').getElementsByTagName('td'); 
    for(i=0;i<x.length;i++) { 
    x[i].style.backgroundColor = colorList.options[colorList.selectedIndex].text; 
    x[i].innerHTML = letter; 
    } 
} 

function clearit(){ 
    var x = document.getElementById('mytable').getElementsByTagName('td'); 
    for(i=0;i<x.length;i++) { 
    x[i].style.backgroundColor = ""; 
    x[i].innerHTML = ""; 
    } 
} 

HTML:

<form name="frm1"> 
    <table> 
     <tr> 
      <td>Pattern Choice:</td> 
      <td> 
       <input type="radio" name="plusSign" value="PlusSign" />Plus Sign</td> 
      <td> 
       <input type="radio" name="letterX" value="LetterX" />Letter X</td> 
      <td> 
       <input type="radio" name="letterH" value="LetterH" />Letter H</td> 
     </tr> 
     <tr> 
      <td>Color Choice:</td> 
      <td> 
       <select name="color"> 
        <option>Red</option> 
        <option>Blue</option> 
        <option>Yellow</option> 
        <option>Green</option> 
        <option>Orange</option> 
       </select> 
      </td> 
     </tr> 
     <table id="mytable"> 
      <TR> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
      </TR> 
      <TR> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
      </TR> 
      <TR> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
      </TR> 
      <TR> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
      </TR> 
      <TR> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
       <TD></TD> 
      </TR> 
     </TABLE> 
     <tr> 
      <input type="button" value="Color It" onclick="colorit()" /> 
      <input type="button" value="Clear" onclick="clearit()" />   
     </tr>  
      </table> 
</Form> 

回答

1

你有幾個問題在這裏:

  • getElementByName應該getElementsByName
  • 你需要給radio按鈕相同的名稱,因此,只有一個可以選擇
  • document.getElementsByName("letterX").checked因爲它返回一個以上的元素將無法正常工作。
  • var colorList = document.getElementsByName("color")應該var colorList = document.getElementById("color");(一定要改變你的<select>id="color"

我已經更新了你的代碼在以下jsFiddle

更改您的HTML

1. <input type="radio" id="plus" name="radioButton" value="PlusSign" /> 
2. <input type="radio" id="letterx" name="radioButton" value="LetterX" /> 
3. <input type="radio" id="letterh" name="radioButton" value="LetterH" /> 
4. <select id="color"> 

的JavaScript:

function colorit(){ 
    var letter; 
    if(document.getElementById("plus").checked) letter = "+"; 
    else if(document.getElementById("letterx").checked) letter = "X"; 
    else if(document.getElementById("letterh").checked) letter = "H"; 
    var colorList = document.getElementById("color"); 
    var x = document.getElementById('mytable').getElementsByTagName('td'); 
    for(i=0;i<x.length;i++) { 
    x[i].style.backgroundColor = colorList.options[colorList.selectedIndex].text;  
    x[i].innerHTML = letter; 
    } 
} 
+0

非常感謝最高境界!我知道它應該用'Id'而不是'Name',但由於我不知道我的老師是否允許我更改HTML表單,所以我試圖不改變表單。但也許它必須改變來解決這個問題。 – 2013-05-05 19:43:02