当前位置:编程学习 > C#/ASP.NET >>

Javascript 获取asp.net 控件问题

想编写一个函数(JS) 来获取asp.net 中DataList模板里面的控件Label值 注意:这里的控件都为服务器控件
答案:给label加class,用jQuery来获取,既能满足CSS的需要,也能满足JS取得元素的需要。因为当页面引用不同的masterPage,它的ID是会变的,而加name降低了代码的简洁性,所以加class最好。
如果不想用jQuery,这里有取class的方法:
var bpGet=new Object();
bpGet.getElementsByClassName=function
(targetClass,targetTag,targetParent){

var targetParent=targetParent||document;

var aTags=(targetTag=='*' && targetParent.all)?targetParent.all:targetParent.getElementsByTagName(targetTag);

targetClass=targetClass.replace(/\\-/g,'\\\\-');

var oReg=new RegExp('(^|\\\\s)'+targetClass+'(\\\\s|$)');

var aMatchElements=new Array();

for(var i=0; i<aTags.length; i++){


var oElement=aTags[i];


if(oReg.test(oElement.className)){



aMatchElements.push(oElement);


}

}

return aMatchElements;

}
//用法:var aListSpan=bpGet.getElementsByClassName('classABC','*');
//第三个参数选填,一般情况下不用。
//此方法返回一个数组

____________________________________________________________________

回答你的追加问题:
理论上可以动态获取ID,只要你掌握规律,不怕麻烦就行。你要考虑几个问题:1.ID前缀,就像这样ctl00_ContentPlaceHolder1_infoList3_DataList1_ctl02_imgInfo(其实我只设置了ID为"imgInfo");2.服务器到底根据数据库条数生成了多少个Label出来,否则你就没法for循环(如果你想说遍历,那不如直接用jQuery);
3.最关键的问题,ID动态生成就是说ID在不同环境下的解析很可能会不一样,比如我曾遇到过,IE7下的ID是XXX$XXX$XXX,同样的代码在IE8里就变成了XXX_XXX_XXX,你怎么去保证任何状况下,程序会用相同的规律去生成ID?

建议你用class,把控制权掌握在自己手中,而不是服务器动态生成。
给label加class,用jQuery来获取,既能满足CSS的需要,也能满足JS取得元素的需要。因为当页面引用不同的masterPage,它的ID是会变的,而加name降低了代码的简洁性,所以加class最好。
如果不想用jQuery,这里有取class的方法:
varbpGet=newObject();
bpGet.getElementsByClassName=function
(targetClass,targetTag,targetParent){
vartargetParent=targetParent||document;
varaTags=(targetTag=='*'&&targetParent.all)?targetParent.all:targetParent.getElementsByTagName(targetTag);
targetClass=targetClass.replace(/\-/g,'\\-');
varoReg=newRegExp('(^|\\s)'+targetClass+'(\\s|$)');
varaMatchElements=newArray();
for(vari=0;i&lt;aTags.length;i++){
varoElement=aTags[i];
if(oReg.test(oElement.className)){
aMatchElements.push(oElement);
}
}
returnaMatchElements;
}
//用法:varaListSpan=bpGet.getElementsByClassName('classABC','*');
//第三个参数选填,一般情况下不用。
//此方法返回一个数组____________________________________________________________________回答你的追加问题:
理论上可以动态获取ID,只要你掌握规律,不怕麻烦就行。你要考虑几个问题:1.ID前缀,就像这样ctl00_ContentPlaceHolder1_infoList3_DataList1_ctl02_imgInfo(其实我只设置了ID为"imgInfo");2.服务器到底根据数据库条数生成了多少个Label出来,否则你就没法for循环(如果你想说遍历,那不如直接用jQuery);
3.最关键的问题,ID动态生成就是说ID在不同环境下的解析很可能会不一样,比如我曾遇到过,IE7下的ID是XXX$XXX$XXX,同样的代码在IE8里就变成了XXX_XXX_XXX,你怎么去保证任何状况下,程序会用相同的规律去生成ID?建议你用class,把控制权掌握在自己手中,而不是服务器动态生成。
太复杂了
不懂。
JAVA

1.通过JS找DataList的ID属性试试,看是否找到;如果行不通

2.运行该Page,打开源代码找到该DataList编译后的HTML代码,通过JS获取你想要获取的值

上一个:asp.net连接数据库文件
下一个:ASP.NET Repeater控件传值问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,