好吧,我承认,我的js很菜,所以这个问题不要笑我。。事情是这样的html代码:<form ...>
<input type="checkbox" onclick="selectAll(this,chk)" >
</form>
这里面的this,我查了一下,说是input这个元素结点的引用js代码 是这样的
var selectAll = function(obj,chk){
var inputs = obj.form.getElementsByTagName("INPUT");
//请问这些为什么要用obj.form.get.....这样的写法?这里的obj不是元素结点吗?后面跟着form是不是代表这个节点的父元素?正常的写法好像是从文档流>具体元素>子元素>属性
//再问,如何将上面这句话变成jquery的语法?
}

解决方案 »

  1.   

    getElementsByTagName...获取上下文中所有名称 匹配的 标签  返回的是一个 数组var inputs = jQuery(obj.form).find('input');(以后语法和api的问题请直接google)
      

  2.   

    这个写法不规范吧,这样写:
    function selectAll(obj, chk) {
        var inputs = obj.parentNode.getElementsByTagName('input');
    }
    //jQuery:
    function selectAll(obj, chk) {
        var inputs = $(obj).parent().find("input");
    }
      

  3.   

    哦。。
    this.form也是可以的,form是表单元素对象的一个标准属性,值为包含该表单对象的form元素的引用。
    没这么用过,感觉确实挺别扭的,还是习惯this.parentNode这种方式来查找父节点。
      

  4.   

    获取页面上的元素有两种,一种是犀利性的:
    document.getElementById();
    父元素是document,
    另外一个是form型的:
    就是以form的name为父元素,依次往下取值,当然这种也是浏览器兼容的。
    document.form.getElementsByTagName("INPUT");<div id="testform">
        <form name="myform" action="">
            <input type="text" name="username" id="username" value="jikey" id="">
        </form>
    </div>
    <script type="text/javascript">
        function id(){
            return document.getElementById(arguments[0]);
        }
        var testf = id('testform'), username = id('username');
        var val1 = document.myform.username.value;
        var val2 = id('username').value;
        console.log(val1 == val2);
    </script>
      

  5.   

    to:T5500,您的代码,只能查到一个inputto:jikeytang,您的代码,受教了。。这些基本能会,对jquery的语法不熟悉to:KK3K2005 您的代码是正确的,并且能够查找到input,谢谢另问:html代码:<form ...>
    <input type="checkbox" onclick="selectAll(this,chk)" >
    <input name="chekboxs[]" value="1" />
    <input name="chekboxs[]" value="2" />
    </form>var selectAll = function(obj,chk){
    var inputs = obj.form.getElementsByTagName("INPUT");
    alert(inputs.length);
    }上述代码在ie中能够运行,但在chrome及ff中就不行了,输出长度为0
      

  6.   

    我测试了过,能找到全部3个input,无法运行是应为调用selectAll()时传入的实参chk未定义。
      

  7.   

    IE中可以,一点问题没有,可到了FF及chrome中就不成了
      

  8.   

    to:t5500
    <form ...>
    <input type="checkbox" onclick="selectAll(this,'chekboxs')" >
    <input name="chekboxs[]" value="1" />
    <input name="chekboxs[]" value="2" />
    </form><script type="text/javascript">
    var selectAll = function(obj,chk){
    //var inputs = obj.form.getElementsByTagName("INPUT");
    //var inputs = jQuery(obj.form).find('input');
    var inputs = $(obj).parent().find("input");
    alert(inputs.length);
    }
    </script>
    用您的方法,alert打印出来的是1
    用var inputs = jQuery(obj.form).find('input');打印全部但只仅于在ie中,到谷歌及火狐都无效。。难道是我人品有问题?
      

  9.   

    <!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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
    </head><body>
    <form>
    <input type="checkbox" onclick="selectAll(this,'chk')" >
    <input name="chekboxs[]" value="1" />
    <input name="chekboxs[]" value="2" />
    </form>
    <script type="text/javascript">
    function selectAll(obj, chk) {
    var inputs = $(obj).parent().find('input');
    alert(inputs.length);
    }
    </script>
    </body>
    </html>
      

  10.   

    to:t5500,我明白了,您的代码,不能有另外的元素,我在form包含了表格用来做样式的貌似加了table就只能查找一个
      

  11.   


    是的,原生JS .parentNode、jQuery .parent()方法都是返回直接父元素。
      

  12.   

    好了,问题解决了,弄了半天是form放的地方不对貌似把form放在table里,ie有效,FF及chrome都无效,以前的坏习惯害死人啊to:T5500,您的代码,如果有另外的元素就只能查找到一个
      

  13.   

    你这个代码有点问题哦<form ...>
    <input type="checkbox" onclick="selectAll(this,chk)" >
    </form>this代表本身  你传进去的是 type = checkbox 本身var selectAll = function(obj,chk){
    var inputs = obj.form.getElementsByTagName("INPUT");
    }而在JS里面 你是把他当做表单用还是怎么的不懂你是什么意思
    obj.form.getElementsByTagName("INPUT");
    你这句话就等于 type="checkbox".form.getElementsByTagName("INPUT");
    这当然有错