<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>复选框</title>
<SCRIPT LANGUAGE="JavaScript" type="text/javaScript">
<!--
function getValue()
{
var inptAry = document.getElementsByTagName("input"); //得到input元素列表
var chkObj = null; //定义select元素对象
for(var i=0; i<inptAry.length; i++)
{
var inptType = inptAry[i].type; //得到input元素的类型
if(inptType == "checkbox")
{ //复选框
chkObj = inptAry[i];
}
}
window.alert("复选框的值:" + chkObj.value);
}function getIdValue()
{
var chkObj = document.getElementById("chkId");
window.alert("带有Id属性的复选框的值:" + chkObj.value);
}function getNameValue()
{
var chkObj = document.frmData.elements("chkName");
var chkVal = chkObj.value;
window.alert("带有name属性的复选框的值:" + chkVal);
}function getDOMValue()
{
var _tb = document.getElementById("tbSlt"); //得到table元素对象
var _td = _tb.lastChild.lastChild.firstChild; //这里为什么是两个lastChild?
                                                 //个人理解:_tb.lastChild就可以得到最后一个tr元素了。
var _chkObj = _td.firstChild; //得到复选框对象
window.alert("使用DOM获取复选框的值:" + _chkObj.value);
}
//-->
</SCRIPT>
</HEAD>
<BODY>
  <form name="frmData" method="post" action="#">
   <table width="300" align="center" border="1" cellspacing="0" id="tbSlt">
   <tr>
   <td width="120"><input type="checkbox" value="123"></td>
   <td>
   <input type="button" value="获取值" onclick="getValue()">
   </td>
   </tr>
   <tr>
   <td width="120"><input type="checkbox" id="chkId" value="234"></td>
   <td>
   <input type="button" value="获取值" onclick="getIdValue()">
   </td>
   </tr>
   <tr>
   <td width="120"><input type="checkbox" name="chkName" value="345"></td>
   <td>
   <input type="button" value="获取值" onclick="getNameValue()">
   </td>
   </tr>
   <tr>
   <td width="120"><input type="checkbox" value="456"></td>
   <td>
   <input type="button" value="获取值" onclick="getDOMValue()">
   </td>
   </tr>
   </table>
  </form>
</BODY>
</HTML>期待解答,谢谢!!

解决方案 »

  1.   

    对不起,刚没有写好
    主要是看下这个函数function getDOMValue()
    {
        var _tb = document.getElementById("tbSlt"); //得到table元素对象
        var _td = _tb.lastChild.lastChild.firstChild; //这里为什么是两个lastChild?
                                                     //个人理解:_tb.lastChild就可以得到最后一个tr元素了。    var _chkObj = _td.firstChild; //得到复选框对象
        window.alert("使用DOM获取复选框的值:" + _chkObj.value);
    }
      

  2.   

    var _td = _tb.lastChild.lastChild.firstChild; //这里为什么是两个lastChild?第一个返回tbody第二个返回tr,第三个firstChild返回tdhtml中的tr默认会在tbody中的,你用alert(_td.innerHTML);可以看到tb中的tbody,里面才是tr
      

  3.   

    var _td = _tb//table
        .lastChild//tbody
        .lastChild//tr
        .firstChild;//td
      

  4.   

    哦  谢谢。。那么我想问下既然这种lastChild,firstChild在表面上好像有不确定性(自己对html语法不是很熟悉,所以觉得不确定),那么当想获取一个结点的时候,是不是应该多用getElementsByTagName和getElementById呢?
      

  5.   

    可以用getElementsByTagName这个,但是getElementById这个你不可能给每个都加上id啊也没有那么 不确定,除了table里会自动产生tbody外其它的元素好像不会出现这种情况了
      

  6.   

    firefox 存在巨大的不确定, 因为不即使只包含了一个空格,Firefox也把它解释为一个节点,所以在firefox中 
        var _td = _tb//table
        .lastChild//tbody
        .lastChild//tr
        .firstChild;//td大部分情况是错的, 只有 如
    <table><tr><td>hello</td>.... 这样所有标签紧挨在一起, 和ie的表现才一致