为什么我的比较不起作用?

时间:2015-12-29 17:41:40

标签: javascript html

在带有onchange事件的HTML中,我试图将下拉列表与特定元素数组进行比较。下拉列表使用类型常量,因此,即使用户选择文本,它们实际上也在选择数值。如果选择了特定元素,我将启用三个单选按钮。如果用户更改了他们的选择,或者他们没有选择阵列中的特定对象,则会选择默认单选按钮,并禁用所有单选按钮。 `

 function enableRadioButtons() {
 
 var RESULTED_IN_ACCIDENT_REQUIRED_CHARGE = [102508,233773,233774];

    for(var i = 0; i < RESULTED_IN_ACCIDENT_REQUIRED_CHARGE.length; i++) {
      if (document.getElementByTagName(select).value == RESULTED_IN_ACCIDENT_REQUIRED_CHARGE) {
       document.getElementByName("optradio").disabled = false;
      }
      else {
       document.getElementById("radio3").checked = true;
       document.getElementByName("optradio").disabled = true;
      }
    }
 }

onchange事件的代码

<html:select styleClass="input" name="drivingRecordForm" property="conviction.chargeTid" onchange="enableRadioButtons(this)">
        <html:option value="0">Select one...</html:option>
          <optgroup label="Moving">
               <html:options collection="movingChargeOptions" property="value" labelProperty="label" />
          </optgroup>
		  <optgroup label="Non-Moving">
               <html:options collection="nonMovingChargeOptions" property="value" labelProperty="label" />
          </optgroup>
        </html:select>

我的单选按钮的代码

          
          <tr valign="bottom">
          <td>&nbsp;</td>
    		<td colspan="2">Did the violation result in an accident?</td>
    		<td colspan="2">
    		<label for="radio1">
    		<input id="radio1" type="radio" name="optradio" value="radioyes" disabled="disabled">Yes
    		</label>
    		<label for="radio2">
			<input id="radio2" type="radio" name="optradio" value="radiono" disabled="disabled">No
			</label>
			<label for="radio3">
			<input id="radio3" type="radio" name="optradio" value="radiounk" checked disabled="disabled">Unknown
			</label>
			</td>
		 </tr>
          

感谢。

1 个答案:

答案 0 :(得分:0)

您正在尝试针对一组值检查值,因此您的if语句应使用.indexOf()

RESULTED_IN_ACCIDENT_REQUIRED_CHARGE.indexOf(document.getElementByTagName(select).value) >= 0

如果索引大于或等于零,则表示该值在数组中。