首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • table计算的问题 [无满意答案结贴,结贴人:wabania]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wabania
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-16 16:18:16 楼主
    一个talbe中含有input,可能含有select,也可能是input,select的混合
    如下所示:
    <table id='a'>
    <tr> <td> <intput name='input11'/> </td> <td> <intput name='input12'/> </td> </tr>
    <tr> <td> <intput name='input21'/> </td> <td> <intput name='input22'/> <td> </tr>
    <tr> <td> <intput name='input31'/> </td> <td> <intput name='input32'/> </td> </tr>
    </table>

    <table id='a'>
    <tr> <td> <intput name='input11'/> <td> <select name='input12'/> </td> </tr>
    <tr> <td> <intput name='input21'/> <td> <select name='input22'/> </td> </tr>
    <tr> <td> <intput name='input31'/> <td> <select name='input32'/> </td> </tr>
    </table>

    <table id='a'>
    <tr> <td> <intput name='input11'> </td> <td> <select name='input12'> </td> </tr>
    <tr> <td> <intput name='input21'> </td> <td> <intput name='input22'> </td> </tr>
    <tr> <td> <intput name='input31'> </td> <td> <intput name='input32'> </td> </tr>
    </table>

    现在要计算整个table的值,公式为input11*input12+input21*input22+input31*input32。但其中的input可能是select。有什么方法可以计算出来?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wabania
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 16:24:251楼 得分:0
    补充一下
    因为table不能getElementsByName,所以只能用getElementsByTagName,但问题是不知道页面的tag是input还是select,所以也无法获取
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • s_liangchao1s
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

    发表于:2008-05-16 16:27:382楼 得分:0
    JScript code
    你都用了getElementsByTagName还不知道tag名?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wabania
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 16:34:363楼 得分:0
    对,不知道是select还是input,因为这个是动态变化的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qiuming0306
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 16:48:474楼 得分:0
    JScript code
    function jisuan() { var a=document.getElementsByName("a"); //判断是否是input if( a[0].rows[0].cells[0].firstChild.nodeName=="INPUT") { var input11=a[0].rows[0].cells[0].firstChild.value; } //判断是否是select if( a[0].rows[0].cells[1].firstChild.nodeName=="SELECT") { var i=a[0].rows[0].cells[1].firstChild.selectedIndex; var input12= a[0].rows[0].cells[1].firstChild.options[i].innerText; } }

    HTML code
    <table id="a"> <tr> <td> <input id="Text1" type="text" /> </td> <td> <select id="Select1" style="width: 173px" onclick="jisuan();"> <option >1</option> <option>2</option> </select> </td> </tr> </table>

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qiuming0306
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 16:55:095楼 得分:0
    引用 1 楼 wabania 的回复:
    补充一下
    因为table不能getElementsByName,所以只能用getElementsByTagName,但问题是不知道页面的tag是input还是select,所以也无法获取

    ??
    为什么Table不能getElementsByName,解释下!不是都有ID吗!为什么不能?即使用getElementsByTagName也可以获取Table数组
    下面的未经过测试:有错误自己修改!
    JScript code
    var a=new arry; a=document.getElementsByTagName("table") for(var i=0;i<a.lenth;i++) { //判断是否是你要的TAble if(a[i].name=="a") }

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wabania
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 16:57:316楼 得分:0
    谢谢楼上
    但问题的关键在document.getElementsByName("a");
    因为我的一个document里有几个table,每个table的内容都不同,所以不能用document.getElementsByName("a"),如果能有table.getElementsByName("a")方法那就好了,现在是table不支持这个方法。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • s_liangchao1s
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

    发表于:2008-05-16 17:03:447楼 得分:0
    HTML code
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <script> function add(){ var o11 = document.getElementsByName('input11'); var o12 = document.getElementsByName('input12'); var o13 = document.getElementsByName('input13'); var num = parseInt(o11.length)+ parseInt(o12.length)+ parseInt(o13.length); var sum = 0; var ovalue1 = 0; for(var i=0;i<o11.length;i++){ if(o11[i].type=="text"&&o11[i].value!=""){ ovalue1 =parseInt(ovalue1)+parseInt(o11[i].value); }else if(o11[i].type!="text"){ ovalue1 =parseInt(ovalue1)+parseInt(o11[i].options[o11[i].selectedIndex].text); } } alert(ovalue1);//差不多了 没时间了 你自己扩展 } </script> </HEAD> <BODY> <table id='a'> <tr> <td> <input name='input11'/> </td> <td> <select name='input11'><option value="11">11</option><option value="22">22</option> </td> </tr> <tr> <td> <input name='input21'/> </td> <td> <input name='input22'/> <td> </tr> <tr> <td> <input name='input31'/> </td> <td> <input name='input32'/> </td> </tr> </table> <input type="button" value="add" onclick="add()"> </BODY> </HTML>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myvicy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

      3

    发表于:2008-05-16 17:11:268楼 得分:0
    获得对象然后用obj.value即可。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myvicy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

      3

    发表于:2008-05-16 17:13:279楼 得分:0
    你在动态生成的时候最好能给这些对象以唯一的id这样在后续操作中就比较方便的获得了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qiuming0306
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 17:15:5910楼 得分:0
    引用 6 楼 wabania 的回复:
    谢谢楼上
    但问题的关键在document.getElementsByName("a");
    因为我的一个document里有几个table,每个table的内容都不同,所以不能用document.getElementsByName("a"),如果能有table.getElementsByName("a")方法那就好了,现在是table不支持这个方法。

    看来你不理解document.getElementsByName("a");
    它的作用就是取出所有name一样的table!
    JScript code
    function jisuan() { var a=document.getElementsByName("a"); if(a.length>0) { for(var j=0;j<a.length;j++) { //判断是否是input if( a[j].rows[0].cells[0].firstChild.nodeName=="INPUT") { var input11=a[j].rows[0].cells[0].firstChild.value; } //判断是否是select if( a[j].rows[0].cells[1].firstChild.nodeName=="SELECT") { var i=a[j].rows[0].cells[1].firstChild.selectedIndex; var input12= a[j].rows[0].cells[1].firstChild.options[i].innerText; } } } }

    HTML code
    <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> <script type="text/javascript" src=JScript.js></script> </head> <body > <form id="form1" runat="server"> <div> <table id="a"> <tr> <td> <input id="Text1" type="text" /> </td> <td> <select id="Select1" style="width: 173px" onclick="jisuan();"> <option >1</option> <option>2</option> </select> </td> </tr> </table> <table id="a"> <tr> <td> <input id="Text2" type="text" /> </td> <td> <select id="Select2" style="width: 173px" onclick="jisuan();"> <option >1</option> <option>2</option> </select> </td> </tr> </table> </div> </form> </body> </html>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qiuming0306
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 17:17:3511楼 得分:0
    getElementsByName 取出的对象是数组!
    楼主最好了解一些DOM!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wabania
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 17:21:1212楼 得分:0
    var a=new arry;
    a=document.getElementsByTagName("table")
    for(var i=0;i <a.lenth;i++)
    {
    //判断是否是你要的TAble
      if(a[i].name=="a")
     
    }

    a[i].getElementsByName('input11');这不能通过啊,提示对象不支持此属性和方法。

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wabania
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 17:27:1513楼 得分:0
    引用 11 楼 qiuming0306 的回复:
    getElementsByName 取出的对象是数组!
    楼主最好了解一些DOM!


    table根本不支持getElementsByName方法

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
      <TITLE> New Document </TITLE>
      <script>

        function test(){
          var obj= document.getElementsByName('a');

          var obj1= obj.getElementsByName('input1');

    }
      </script>
    </HEAD>
    <BODY>
      <table name='a'>
    <tr> <td> <input name='input1'/> </td> <td> <input name='input2'/> <td> </tr>
    <tr> <td> <input name='input1'/> </td> <td> <input name='input2'/> </td> </tr>
    </table>

    <input type="button" value="test" onclick="test()">
    </BODY>
    </HTML>

    上面这段代码在你的IE中能通过吗
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qiuming0306
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 17:58:0214楼 得分:0
    你把 <table name='a'>改成ID不就可以了,或者添加一个一样名字的ID=“a”
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qiuming0306
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 18:04:1915楼 得分:0
    html中name和id的区别 表单元素(form  input  textarea  select)与框架元素(iframe  frame)用  name 
    这些元素都与表单(框架元素作用于form的target)提交有关,  在表单的接收页面只 
    接收有name的元素,  赋ID的元素通过表单是接收不到值的. 

    当然上述元素也可以赋ID值,  赋ID值的时候引用这些元素的方法就要变一下了. 
    赋  name:  document.formName.inputName        document.frames("frameName") 
    赋  ID    :  document.all.inputID                      document.all.frameID 

    只能赋ID不能赋name的元素:(除去与表单相关的元素都只能赋ID) 
    body  li  a  table  tr  td  th  p  div  span  pre  dl  dt  dd  font  b  等等
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wabania
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-16 18:20:2416楼 得分:0
    我的目的是要找到一个document里其中一个table所有名字相同的元素,这些元素虽然名字相同,但类型可能不同,有的是input,有的是select,动态变化的。
    那么我用table.getElementsByTagname不行,用table.getElementsByName也不行,不支持此方法。
    如果在动态生成时给每个元素赋一个唯一的ID,那么在动态生成时还得记录这些ID,然后才能通过getElementByid的方法找到这些元素。


    回楼上:
    你把  <table name='a'>改成ID不就可以了,或者添加一个一样名字的ID=“a”
    改为ID,table.getElementsByName方法照样不行。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qiuming0306
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-17 09:00:2017楼 得分:0
    引用 16 楼 wabania 的回复:
    我的目的是要找到一个document里其中一个table所有名字相同的元素,这些元素虽然名字相同,但类型可能不同,有的是input,有的是select,动态变化的。
    那么我用table.getElementsByTagname不行,用table.getElementsByName也不行,不支持此方法。
    如果在动态生成时给每个元素赋一个唯一的ID,那么在动态生成时还得记录这些ID,然后才能通过getElementByid的方法找到这些元素。


    回楼上:
    你把  <table name='a'>改成I…

    我给你的测试用例你试运行了没有!10楼的例子!我是测试过的!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rjzou2006
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-17 09:27:4618楼 得分:0
    获得对象然后用obj.value即可。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gigi311
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-17 11:48:4019楼 得分:0
    看了半天好像很复杂的样子,你不就是想得到input或者是select的值吗?如果你select设置了option的value,那这两个控件得值的方法不都是.value吗?
    另外,没有什么table支不支持getElementsByName的,都支持,只要你给他一个域。一般用的document是全局的。向上面人说的,先用getElementById得到这个table的obj,在用obj.getElementsByName就ok了!
    简单点,简单点!