喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: [问题] 我写的一个函数匹配元素的时候有些奇怪  
 
熟人
中级会员
Rank: 3Rank: 3



UID 92185
精华 0
积分 332
帖子 476
金钱 332 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2007-4-29
状态 离线
[广告]: q m
我写的一个函数匹配元素的时候有些奇怪

我在写一个匹配元素的函数时碰到了一个很奇怪的问题 请大家帮我看看
我写得函数如下:

//@id(String)                : 需要查找的容器对象的id
//@return(Mix)                : 匹配的对象或空值
function $(id){
        return document.getElementById(id);
}

//@obj(DOM Object)                : 需要查找的容器对象
//@tag(String)                        : 标记名
//@pattern(Array)                : 属性和值匹配的关联数组
//@return(Array)                : 匹配的所有对象
function $gElements(obj, tag, pattern){
        var eles = obj.getElementsByTagName(tag);
        var result = new Array();
        for(var i = 0;i < eles.length;i ++){
                var status = true;
                for(var j in pattern){
                        if(null === eles[i][j]){
                                status = false;
                                break;
                        }
                        if(null === eles[i][j].match(pattern[j])){
                                status = false;
                                break;
                        }
                }
                if(status){
                        result[i] = eles[i];
                }
        }
        return result;
}

//@id(String)                : 需要查找的容器对象的id
//@tag(String)                : 标记名
//@pattern(Array)        : 属性和值匹配的关联数组
//@return(Mix)                : 匹配的所有对象或空值
function $gElementsById(id, tag, pattern){
        var obj = $(id);
        if(null == pattern){
                pattern = new Array();
        }
        if(obj){
                return $gElements(obj, tag, pattern);
        }
        return null;
}
然后我用这些函数处理一个表格的时候结果就很奇怪了
表格如下:

<table id="fileList">
        <tr id="listTitle">
                <td>Name</td>
                <td>R/W/E</td>
                <td>Type</td>
                <td>aTime</td>
                <td>cTime</td>
                <td>mTime</td>
                <td>Group</td>
                <td>Owner</td>
                <td>Select</td>
        </tr>
        <form action="/" method="get">
        <tbody id="listData">
        <tr id="row_0" class="dataRow">
                <td class="col_0">1</td>
                <td class="col_1">2</td>
                <td class="col_2">3</td>
                <td class="col_3">4</td>
                <td class="col_4">5</td>
                <td class="col_5">6</td>
                <td class="col_6">7</td>
                <td class="col_7">8</td>
                <td class="col_8"><input type="checkbox" name="row[]" value="1" /></td>
        </tr>
        <tr id="row_1" class="dataRow">
                <td class="col_0">1</td>
                <td class="col_1">2</td>
                <td class="col_2">3</td>
                <td class="col_3">4</td>
                <td class="col_4">5</td>
                <td class="col_5">6</td>
                <td class="col_6">7</td>
                <td class="col_7">8</td>
                <td class="col_8"><input type="checkbox" name="row[]" value="2" /></td>
        </tr>
        <tr id="row_2" class="dataRow">
                <td class="col_0">1</td>
                <td class="col_1">2</td>
                <td class="col_2">3</td>
                <td class="col_3">4</td>
                <td class="col_4">5</td>
                <td class="col_5">6</td>
                <td class="col_6">7</td>
                <td class="col_7">8</td>
                <td class="col_8"><input type="checkbox" name="row[]" value="3" /></td>
        </tr>
        <tr id="row_3" class="dataRow">
                <td class="col_0">1</td>
                <td class="col_1">2</td>
                <td class="col_2">3</td>
                <td class="col_3">4</td>
                <td class="col_4">5</td>
                <td class="col_5">6</td>
                <td class="col_6">7</td>
                <td class="col_7">8</td>
                <td class="col_8"><input type="checkbox" name="row[]" value="4" /></td>
        </tr>
        <tr id="row_a" class="dataRow">
                <td class="col_0">1</td>
                <td class="col_1">2</td>
                <td class="col_2">3</td>
                <td class="col_3">4</td>
                <td class="col_4">5</td>
                <td class="col_5">6</td>
                <td class="col_6">7</td>
                <td class="col_7">8</td>
                <td class="col_8"><input type="checkbox" name="row[4]" value="5" /></td>
        </tr>
        </tbody>
        </form>
</table>
我在后面使用自己写的函数:

var pattern = {
        "id"                : /^row_\d+/,
        "className"        : /^dataRow$/
}

var list = $gElementsById("fileList", "tr", pattern);
for(var i in list){
        document.writeln(list[i].id);
}
alert(list.length);
结果如我上传得图片 为什么明明获取了4个对象却长度等于5


 附件: 您所在的用户组无法下载或查看附件
2007-4-29 05:23 PM#1
查看资料  发短消息  顶部
 
熟人
中级会员
Rank: 3Rank: 3



UID 92185
精华 0
积分 332
帖子 476
金钱 332 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2007-4-29
状态 离线
[推荐阅读] 我是这样获取客户端的网卡MAC的!
似乎找到问题了:
把这行
result = eles;
改成
result[result.length] = eles;
就正常了
2007-4-29 05:40 PM#2
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.022803 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP