| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1239 人关注过本帖
标题:菜鸟请教一个关于getElementById()的问题?请各位高手帮帮忙!
只看楼主 加入收藏
bocai_aixg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-4-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
菜鸟请教一个关于getElementById()的问题?请各位高手帮帮忙!
我本来是用getElementById()方法获取所有CheckBox的Id,但是CheckBox的Id有几个字母一样但是大小写不一样比如id=ABC,id=aBC,id=Abc,因为getElementById()方法的参数在IE里面是不区分大小写的,所以我只能获取到第一个id,我想知道还有什么方法可以获取到id同时又区分id的大小写。
搜索更多相关主题的帖子: 区分大小写 
2011-04-26 16:06
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:0 
getElementById。id是什么?id是identity 标记元素唯一性的属性。你的身份证号还和好几个人一样?
根据id只能获取对应的唯一的一个DOM对象,所以才是getElementById而不是getElementsById
要获取多个元素 方法有很多 你可以根据name 可以根据tagname  可以根据class等等

另外谁教你IE下js不区分大小写啊 js在哪都大小写敏感
2011-04-27 08:41
bocai_aixg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-4-24
收藏
得分:0 
回复 2楼 foktime
不好意思,因为我是初学者,有很多东西不懂,所以有些东西没表达清楚。我是要通过ID来获取它的对象,比如我的checkbox存在这样几个ID,id=“ABC”,id=“Abc”,id=“abc”,但是getElementById这个方法的参数在IE里面是不区分大小写的,所以就只能获取到第一个ID的对象了。我是希望能有什么其他的方法能分别通过这三个ID获取到这个三个checkbox的对象,至于getElementById这个方法的参数在IE里面不区分大小写我是在网上查的,另外我在其他浏览器比如Firefox能获取到三个对象。
2011-04-27 09:29
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:0 
贴代码
2011-04-27 10:34
bocai_aixg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-4-24
收藏
得分:0 
var checkedBoxes = [];
function saveCheckedBoxes() {
            // find all checked boxes
            checkedList = $("div.dataGrid").find("input:checked");//<div class="dataGrid"></div>
            for (var i = 0; i < checkedList.length; i++) {
                // store in list
                checkedBoxes[i] = checkedList[i].id;
            
      
function restoreCheckedBoxes() {
            for (var i = 0; i < checkedBoxes.length; i++) {
                // for some reason jQuery doesn't work here
                var checkBox = document.getElementById(checkedBoxes[i]);
                if (checkBox != null)
                    checkBox.setAttribute("checked", "checked");
            }

            checkedBoxes = [];  // clear out the list
        }
2011-04-27 11:14
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:0 
如果你可以把整个页面发上来的话还是希望你全发,方便我调试。
另外从你的部分代码中看到,有jquery方法和一般js方法混杂使用的情况。用$选择器获取的对象是经过jQ包装后的DOM对象,即jquery对象。
比如你的checkedList,取长度应该是用size()吧,而且遍历each就可以了。取id也不是这么取的 应该是.attr("id")
当然即使取不到也不会报错,jQ似乎是有容错机制的
既然上面的代码有问题,那么下面的代码也无从谈起。
所以你还是要上就上的全一点,给我一个完整的可测试页面吧。
2011-04-27 13:44
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:0 
至于getElementById这个方法的参数在IE里面不区分大小写我是在网上查的

这点确实如你所说,是我知识点上的疏漏。以前并没有注意过这样的问题,ie对js解析不规范的地方真的是太多了
跟你学了一点。
2011-04-27 13:55
bocai_aixg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-4-24
收藏
得分:0 
不好意思不是我不想上全,只是我们这个项目用的是 MVC2这个框架,所以脚本和页面并不在同一个页面。我只能大致的贴一些代码了。
b.ascx
<table class=""expand-table"">
                <tr>
                    <td class=""table-child1"">
                        <input name=""## DataItem.get_columnValue() ##""  value=""## getFileSize(DataItem,""Name"") ##"" onclick=""StorageGroupCheckBox_onClick('## DataItem.get_columnValue() ##');"" id=""## DataItem.get_columnValue() ##"" type=""checkbox"" />
</td></tr></table>

a.aspx页
<div class="dataGrid">
        <% Html.RenderAction("a", "DataGrid"); %>
    </div>
//这里是把b.ascx加到这个页来

var checkedBoxes = [];
function ExpandOrCollapseGroup(event, sender, groupId) {
            saveCheckedBoxes();  // save all checked boxes
            CloudStorageGrid.ToggleGroupExpand(event, sender, groupId);
            restoreCheckedBoxes();
                  }
function saveCheckedBoxes() {
            checkedList = $("div.dataGrid").find("input:checked");//<div class="dataGrid"></div>
            for (var i = 0; i < checkedList.length; i++) {
                checkedBoxes[i] = checkedList[i].id;
            
      
function restoreCheckedBoxes() {
            for (var i = 0; i < checkedBoxes.length; i++) {
                var checkBox = document.getElementById(checkedBoxes[i]);
                if (checkBox != null)
                    checkBox.setAttribute("checked", "checked");
            }

            checkedBoxes = [];          }
可能这样贴还是不清楚,但是我也只能这样贴了。
我的思路是这样的:checkedBoxes[i]已经得到所有ID了,我想把checkedBoxes[i]里面的值全部转换成小写或者大写,这样就会产生几个相同的ID了,再用一个判断假如不存在相同的ID就直接把checkedBoxes[i]传到下一个方法用,要是存在的话,就在checkedBoxes[i]后面加一个常数再传到下一个方法。我用很多方式但是无法实现,所以我也不确定这个方法能行的通不?

[ 本帖最后由 bocai_aixg 于 2011-4-27 14:46 编辑 ]
2011-04-27 14:36
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:0 
不用贴开发源码,在你浏览时右键查看源代码  直接复制页面输出的html贴上来就好了
你还是先按照我上个贴给你说的那些问题,把saveCheckedBoxes()里头的错误写法改正再测试
至于ID这个问题,你直接在定义id的时候做文章不好么,为什么一定要定义一些aBC、ABC之类值呢,说实话这种id定义方式有些变态
最好的办法就是直接避免这种toLowerCase()或者toUpperCase()之后相同的情况。id的定义规则你应该改的更合理一些才行
 id=""## DataItem.get_columnValue() ##"" 在DataItem.get_columnValue()后面循环着+自然数什么的都可以啊。
总之这个id是你为了写程序方便才定义的,无论你定义成什么,你页面的业务逻辑对这个都没有要求吧?所以肯定是怎么用着方便怎么来定义
不推荐这种将上游简单问题移到js中解决的思路  复杂化了
2011-04-27 15:03
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:0 
按着思路速度改代码测试 过了5点我就下班了
2011-04-27 15:07
快速回复:菜鸟请教一个关于getElementById()的问题?请各位高手帮帮忙!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026479 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved