想要用$L(".qwe")[0].show("红色");获取类中的一个元素,请问为什么这么写不能实现?
<!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="public.js"></script>
</head><body><div id="aa" ></div><div class="qwe" ></div> 
<div class="qwe" ></div> 
<div class="qwe" ></div> 
<div class="qwe" ></div> 
<div class="qwe" ></div> 
<div class="qwe" ></div> 
<script>//$L("#aa").show("龙");
$L(".qwe")[0].show("红色");
</script>
</body>
var $L = function (selector){    return new $L.fn.init(selector);
}$L.fn = $L.prototype;$L.fn.init = function (selector){
var re_json = {
id:/#(\w+)/,
class:/.(\w+)/,
}
var re = 0;
for(var r_selector in re_json)
{
if( selector.match(re_json[r_selector]))
{
alert(r_selector);
//re = new RegExp("#(\\w+)","i");
switch(r_selector)
{
case "id"://获取id
re = new RegExp("#(\w+)","i");
this.xid = document.getElementById(RegExp.$1);
this.xinnerHTML =this.xid.innerHTML;
break;
case "class"://获取class
re = new RegExp(".(\w+)","i");
this.xclass = getElementsClass(RegExp.$1);
return this.xclass;
break;
default:

break;
}
}
}
   
    //var result = re.test(selector);//test()方法用于检测一个字符串是否匹配某个模式
//alert(RegExp.$1);
//var Lid =document.getElementById(RegExp.$1);
//this.xid = document.getElementById(RegExp.$1);
//this.xinnerHTML =Lid.innerHTML;
}$L.fn.init.prototype = $L.fn;
$L.fn.show = function(a){
//alert(this.xid)
if(this.xid != undefined)
{
     alert(this.xid+'#'+a);
}
if(this.xclass != undefined)
{
alert(this.xclass+'#'+a);
}
return this;
};

解决方案 »

  1.   

    Js 
    29行
    this.xclass = document.getElementsByClassName(RegExp.$1);
    30行
    return this;
    49行
    $L.fn.show = function(a,index=0){
    57行
    alert(this.xclass[index].className+'#'+a);
      

  2.   

    html
    22行
    $L(".qwe").show("红色",1);
      

  3.   

    $L(".qwe")这里返回的是一个DOM元素数组,但你在js里面中$L.fn.show操作的又是$L对象,所以你在init里面应该返回this而不是this.xclass
      

  4.   

    我要用这种写法$L(".qwe")[0]
      

  5.   

    这类似于jquery对象和DOM对象的区别
    JQuery对象与DOM对象的区别与转换
     
    1.jQuery对象和DOM对象的区别DOM对象,即是我们用传统的方法(javascript)获得的对象,jQuery对象即是用jQuery类库的选择器获得的对象;eg:var domObj = document.getElementById("id"); //DOM对象
    var $obj = $("#id"); //jQuery对象;jQuery对象就是通过jQuery包装DOM对象后产生的对象,它是jQuery独有的。如果一个对象是jQuery对象,那么就可以使用jQuery里的方法,例:
    $("#foo").html(); //获取id为foo的元素内的html代码,html()是jQuery特有的方法;
    上面的那段代码等同于:
    document.getElementById("foo").innerHTML;注意:在jQuery对象中无法使用DOM对象的任何方法。
    例如$("#id").innerHTML 和$("#id").checked之类的写法都是错误的,可以用$("#id").html()和$("#id").attr ("checked")之类的 jQuery方法来代替。同样,DOM对象也不能使用jQuery方法。2.jQuery对象和DOM对象的互相转换1)jquery对象转换成 dom对象
    jquery提供了两种方法将一个jquery对象转换成一个dom对象,即[index]和get(index)。可能有人会觉得奇怪,怎么是用下标呢,没错,jquery对象就是一个数组对象.
    下面代码将演示一个jquery对象转换成dom对象,再使用dom对象的方法
    eg:
    var $cr=$("#cr"); //jquery对象
    var cr = $cr[0]; //dom对象 也可写成 var cr=$cr.get(0);
    alert(cr.checked); //检测这个checkbox是否给选中2)dom对象转换成jquery对象对于一个dom对象,只需要用$()把dom对象包装起来,就可以获得一个jquery对象了,方法为$(dom对象);
    复制代码 代码如下:var cr=document.getElementById("cr"); //dom对象
    var $cr = $(cr); //转换成jquery对象(注意:转换后可以任意使用jquery中的方法了.)建议:平时用到的jquery对象都是通过$()函数制造出来的,$()函数就是一个jquery对象的制造工厂.如果获取的对象是 jquery对象,那么在变量前面加上$,这样方便容易识别出哪些是jquery对象,例如:
    var $variable = jquery对象;
    如果获取的是dom对象,则定义如下:
    var variable = dom对象好文要顶 关注我 
      

  6.   


    <a class="a"></a>
    <a class="a"></a>
    <a class="a"></a>
    $('.a')  // 选择了3个a,都是jq对象(可以用jq的属性、方法)$('.a').eq(1) // 选择了第二个a,是jq对象(不可以使用dom属性方法,可以用jq的属性、方法)$('.a')[1]  // 选择了第二个a,是dom对象(可以使用dom属性,方法,不可以使用jq属性方法)$('.a').eq(1)[0]  // 选择了第二个a,并且转化成都是dom对象(可以使用dom属性,方法,不可以使用jq属性方法)$('.a')[0].eq(1) // 错误,因为dom对象用不了jq方法,eq()是jq方法。