如何在Javascript中以相同的方式获取文本框,textareas和无线电的价值?

Cli*_*ote 1 html javascript dhtml

我想要一个函数/代码,它将返回用户为其名称/ id传递给它的字段提交的值.字段是文本框,文本区域,广播还是选择无关紧要.例如,该字段可以是:

<input type='radio' name='a_21' value='test' id='a_21_0' />
<input type='radio' name='a_21' value='test2' id='a_21_1' />
Run Code Online (Sandbox Code Playgroud)

要么

<textarea name="a_21" rows="30" cols="6"></textarea>
Run Code Online (Sandbox Code Playgroud)

当我打电话时:

function getVal('a_21');
Run Code Online (Sandbox Code Playgroud)

它应该返回所选的值.

我怎样才能做到这一点?将:

document.myForm.field.value
Run Code Online (Sandbox Code Playgroud)

还可以为textareas,下拉菜单和收音机工作吗?

Seb*_*Seb 7

问题是不同的小部件有不同的目的.例如,一个<select>包含多个选项的框,多个复选框,甚至单个复选框(其值只是"on"或"off")将没有单个值,因此它们可以与其他小部件的行为不同.

但是如果你想拥有一个单一的功能,你可以这样做:

function getVal(obj){
  if(obj.value){
    return obj.value;
  }

  if(obj.selectedIndex){
    return obj.options[obj.selectedIndex];
  }

  if(obj.checked){
    return obj.checked;
  }

 return null;
}
Run Code Online (Sandbox Code Playgroud)