非常简单的东西。。但由于之前没有用 单纯JavaScript 的经验(谁能给我个比较好听的词来表示单纯的JavaScript 而不是依托于其他插件 或者框架的
确实还是研究了一下下才写出来。
先来看HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Use JavaScript to get radio and select value</title>
<script type="text/javascript" src="http://www.cnblogs.com/../JSUtils.js"></script>
</head>
<body>
<fieldset>
<legend>Get Radio Value</legend>
<input name="Radio" type="radio" value="male" />Male
<input name="Radio" type="radio" value="female" />Female
<input name="GetRadioValue" type="button" onclick="alert(JS.GetRadioValue('Radio'));"
value="Get radio value" />
</fieldset>
<fieldset>
<legend>Get Select Value</legend>
<select id="Select" name="Select">
<option>Select a number</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input name="GetSelectValue" type="button" onclick="alert(JS.GetSelectValue('Select'))"
value="Get select value" />
</fieldset>
</body>
</html>
效果如下:
呃。。我本来是想先阐述下流程 然后再附上JS代码的。。
不过大概这个东西流程太简单了 。。 所以我还是 直接把代码贴出来了 然后说明写在了注释里
var JS = { //我喜欢把一些相关的方法写到一个静态JS对象里 我认为这样会使VS得智能感知对我们比较友善
//如果对封装不明白的 请看 这里
IsNullOrEmpty:function(str){ //这是一个工具方法,用来判断一个字符串是否未定义,或为空,或为空字符串
if(typeof(str)=="undefined") return true; //这具如果有疑问的话 可以看我下面的说明
if(str==null) return true;
if(str=="") return true;
return false;
},//IsNullOrEmpty
GetRadioValue:function(radioName) //获得单选框当前选中的值的方法,
//为了方便以后使用 所以我把 单选框的Name属性作为了一个参数
{
var radios = document.getElementsByName(radioName);
//这里我们用 getElementsByName 来获得所有的单选框,因为单选框一般都是2个或2个以上为一组出现的
for(var i = 0 ; i< radios.length;i++)//遍历丫的。。。
{
var radio = radios.item(i);//这里也可以写成 var radio = radios[i]
//但是我在下面提出了一个疑问 希望高手解答
if(radio.checked)
{
if(JS.IsNullOrEmpty(radio.value)) return undefined;//无论当前选中的值是 未定义 还是空 还是空字符串
//我都把他们的返回值统一设置为 undefined
//我觉得这样做的话,以后使用这个方法的时候比较方便
return radio.value;
}
}
return undefined;//最后 如果没有任何一个单选框被选中的话 返回 undefined
},//GetRadioValue
GetSelectValue:function(selectId)//获得下拉列表当前选中的值的方法,
//为了方便以后使用 所以我把 下拉列表的ID属性作为了一个参数
{
var select = document.getElementById(selectId);
var options = select.options;//这样可以让我们获得该下拉列表的所有选项
for(var i = 0 ; i<options.length ;i++)//依然遍历丫的
//之后做的基本和前一个方法一样了
//注意 radio的是否选中 是checked属性 select则是 selected属性
{
var option = options[i];
if(option.selected)
{
if(JS.IsNullOrEmpty(option.value)) return undefined;
return option.value;
}
}
return undefined;
}//GetSelectValue
}
改正一下:
我把GetSelectValue(selectId)这个方法想复杂了 其实只要这样 就可以了 谢谢 seagreen7 JayChow
GetSelectValue:function(selectId)
{
var select = document.getElementById(selectId);
if(JS.IsNullOrEmpty(select.value))
{
return undefined;
}
else
{
return select.value;
}
},//GetSelectValue
关于 underfined:
underfined 在 javascript中 表示 未定义。
例如:
var aaa;
alert(aaa);
这个时候 就会输出 undefined.
但是判断一个变量的值 是否为 underfinded 不能使用
aaa==underfined 或者 aaa=="underfined" 而要使用 typeof(aaa)=="underfined";
至于更具体的原因 请看这里的一篇文章
关于radios.item(i)的疑问
我们可以对 getElementsByName 返回的集合 使用 radios.item(i) 或者 radios[i],
但是 如果我们像这样定义一个数组 var arr = [1,2,3,4,5];
好像就只能使用 radios[i] 而不能使用 arr.item(i);
也就是说 getElementsByName 返回的不是一个数组? 那他返回的是什么呢。。 求解
----------------------------------------------------------------分割线--------------------------------------------------------------------
附上两端今天最新原创的英文
1.今天老外boss 终于发了个工作给我。。大概就是给几个按钮的事件里 加上同一个功能。。
本来就是很简单的工作。结果看过代码之后 更是发现 其实他要的功能 之前已经存在了。。我只要注释掉几行语句就能搞定。。
10分钟完成。。交给他审查 但是大概因为高兴过头了。。居然落下了一个按钮没改。。。 被他发现了。
修正之后,我对他这样说:
im sorry sir,im too impatient for success just now.--- 不好意思,我刚才有点急于求成了
and i fixed it now.--- 我现在已经把它改正了
you can look it again.---你可以再去看一下
2.我刚到公司才几天,公司让我和一个老员工Wang一起工作,这样他可以带着点我,
之前语音通话安排任务的时候 都是 boss,wang,我 一起参与的,安排wang的任务的时候也是这样。
但是今天 他给了我第一份独立任务后。。这种会议就变成都是1对1进行了。。 我觉得这样对我来说有点困难。
所以我就对BOSS说:
sir ---称呼一下。。
when we voice call.---当我们语音通话的时候
can we three are all join it as we were before?---能不能我们3个全都参与,就像我们之前一样?
i think it will contribute to i adapt english.---我认为这样有助于我适应英文
and i need wang to help me confirm task so far.---而且到目前为止,我需要wang帮助我确认下任务。
这里写的内容相当基础,只提供新手参考。。但是切勿全信。。。尤其是英文部分。。
内容中如果有错误 或者有疑问的话 欢迎高手们指点 但是也请嘴下留情 键盘下留情 手写板下留情 总之 千万不要喷我 谢谢