区别?在线等。。。。

weilun 2008-09-02 10:05:54
哪位知道这两种写法到底有什么区别?为什么我在调用JS文件里的函数combobox(document.all.textid,lav,lat)(其中textid是输入框的id)时,<asp:TextBox....>这种写法就会出错,而<input type=text ...>就完全正确。
如果必须用asp.net的组件<asp:TextBox...>,那么函数的调用应该怎么写?
...全文
838 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
amandag 2008-09-02
  • 打赏
  • 举报
回复
楼主还是先了解asp.net的概念先
treesky 2008-09-02
  • 打赏
  • 举报
回复
前者為服務器端控件,后者為客戶端控件 !
tm62490309 2008-09-02
  • 打赏
  • 举报
回复
document.getElementById("TEXTBOX的ID")
Summer_winter 2008-09-02
  • 打赏
  • 举报
回复
自己顶,简单的问题
蝶恋花雨 2008-09-02
  • 打赏
  • 举报
回复
<asp:TextBox...> 最终还是解析为<input type=text...> HTML
syc958 2008-09-02
  • 打赏
  • 举报
回复
其实就是被微软给封装了一下!其它的没有什么不同的!在服务器端运行的控件在客房端显示的ID是不可预测的!所果要用其ID写写clicentid才可以!
weilun 2008-09-02
  • 打赏
  • 举报
回复
这是我的js代码
<!--Combobox-->
function combobox(sobj,al_v,al_t)
{

var rmopo = window.createPopup();

function rm(i,oct,h)
{
var i2=eval(i);
var oct=eval(oct);
var w=eval(i).offsetWidth;
var h=eval(h);
var lefter = i2.offsetLeft-1; var topper = i2.offsetHeight;
rmopo.document.body.innerHTML = oct.innerHTML;
rmopo.document.body.style.border="1px solid #3162A6";
rmopo.document.body.style.background="#F6F6F6";
rmopo.show(lefter, topper, w, h, i2);
}

loadcombobox(sobj,al_v,al_t);

function loadcombobox(obj,al_v,al_t)
{
var obj = eval(obj)
theListArrayV = al_v;
theListArrayT = al_t;

var tempStr='<DIV id="'+obj.id+'showcombox" style="position:relative;visibility:hidden">'
+'<DIV class="ac_menu" id="'+obj.id+'ListDiv" style="FONT-SIZE: 12px; Z-INDEX: 10; POSITION: absolute;OVERFLOW-Y:auto; WIDTH:expression('+obj.offsetWidth+'-1);">'
for(var i=0;i<theListArrayV.length;i++)
tempStr+='<DIV class="ac_menuitem" onmouseover="this.style.backgroundColor=\'#D6DEEC\';" onmouseout="this.style.backgroundColor=\'\';" onclick="this.selectedflag=1;parent.document.all.'+obj.id+'.value=this.value;parent.document.all.'+obj.id+'.blur();" style="cursor:default;" value="'+htmlEncode(theListArrayV[i])+'" textvalue="'+htmlEncode(theListArrayT[i])+'">'+htmlEncode(theListArrayT[i])+'</DIV>';
tempStr+='</DIV></DIV>';

obj.insertAdjacentHTML("afterEnd",tempStr);
obj.onfocus=AC_OnFocus;
obj.onclick=AC_OnFocus;
obj.onblur=AC_OnBlur;
obj.onkeydown=AC_OnKeyDown;
obj.autoComplete="off";
obj.onpropertychange=AC_OnPropertyChange;
}

function AC_OnFocus(obj)
{
if(obj==null) obj=event.srcElement;
popmenu=eval(obj.id+"showcombox");
rm(obj,popmenu,130);
AC_OnPropertyChange(obj);
}


function AC_OnBlur(obj)
{
rmopo.hide();
}

function AC_OnPropertyChange(obj)
{
if(obj==null) obj=event.srcElement;

var dv = eval("rmopo.document.all['"+obj.id+"ListDiv']");
theListDiv = dv
if(theListDiv==null) return ;
var theListDivChildren=theListDiv.children;

theListDiv.selectedIndex=-1;
var theFirstVisibleIndex=-1;

var objValue=obj.value;

for(var i=0;i<theListDivChildren.length;i++)
{
if(theListDiv.children[i].textvalue.indexOf(objValue)==0)
{
if(theFirstVisibleIndex==-1) theFirstVisibleIndex=i;
theListDivChildren[i].style.backgroundColor="#F6F6F6";
theListDivChildren[i].style.display="";
}
else
theListDivChildren[i].style.display="none";
if(theListDiv.selectedIndex==-1 && theListDiv.children[i].textvalue==objValue)
{
theListDiv.selectedIndex=i;
}
}
if(theListDiv.selectedIndex==-1 && theFirstVisibleIndex!=-1)
{
theListDiv.selectedIndex=theFirstVisibleIndex;
}
if(theListDiv.selectedIndex!=-1)
{
theListDiv.children[theListDiv.selectedIndex].style.backgroundColor="#D6DEEC";
}
adjustListDivScroll(obj);
}

function AC_OnKeyDown(obj)
{
if(obj==null) obj=event.srcElement;

var AC_TAB = 9;
var AC_ENTER = 13;
var AC_UP_ARROW = 38;
var AC_DOWN_ARROW = 40;

var dv = eval("rmopo.document.all['"+obj.id+"ListDiv']");
theListDiv = dv
if(theListDiv==null) return ;

var keyCode=event.keyCode;
if(keyCode==AC_ENTER) keyCode=event.keyCode=AC_TAB;

if(keyCode==AC_TAB && theListDiv.selectedIndex!=-1)
{
obj.value=theListDiv.children[theListDiv.selectedIndex].value;
rmopo.hide() ;
}

if(keyCode==AC_UP_ARROW && theListDiv.selectedIndex!=-1)
{
for(var i=theListDiv.selectedIndex-1;i>-1;i--)
{
if(theListDiv.children[i].style.display!="none")
{
theListDiv.children[theListDiv.selectedIndex].style.backgroundColor="#F6F6F6";
theListDiv.selectedIndex=i;
theListDiv.children[theListDiv.selectedIndex].style.backgroundColor="#D6DEEC";
adjustListDivScroll(obj);
break;
}
}
}

if(keyCode==AC_DOWN_ARROW && theListDiv.selectedIndex!=-1)
{
for(var i=theListDiv.selectedIndex*1+1;i<theListDiv.children.length;i++)
{
if(theListDiv.children[i].style.display!="none")
{
theListDiv.children[theListDiv.selectedIndex].style.backgroundColor="#F6F6F6";
theListDiv.selectedIndex=i;
theListDiv.children[theListDiv.selectedIndex].style.backgroundColor="#D6DEEC";
adjustListDivScroll(obj);
break;
}
}
return;
}

}

function adjustListDivScroll(obj)
{
if(obj==null) obj=event.srcElement;

var dv = eval("rmopo.document.all['"+obj.id+"ListDiv']");
theListDiv = dv

if ( theListDiv==null || theListDiv.selectedIndex==-1 ) return ;
var i=theListDiv.selectedIndex;
if((theListDiv.children[i].offsetTop<theListDiv.scrollTop)||(theListDiv.children[i].offsetTop>theListDiv.scrollTop+120))
theListDiv.scrollTop=theListDiv.children[i].offsetTop-85;
}

function htmlEncode(str)
{
if(str==null) return "";
str=str.replace(/</ig,"<")
str=str.replace(/>/ig,">");
str=str.replace(/"/ig,""");
return str;
}
}
<!--end-->
weilun 2008-09-02
  • 打赏
  • 举报
回复
12楼说的对,确实是js函数的问题,其他楼的方法我都试了,不管用。html运行后的代码完全一样,没区别。
不知在js函数里怎么找服务器端的textid?
fior_aaa 2008-09-02
  • 打赏
  • 举报
回复
<asp:TextBox....>这种写法是你添加了一个asp.net的组件TestBox,<input type=text ...>这种写法是你添加了一个客户端的控件,<input>是Html的标记,你写的函数是在客户端找textid,所以<input type=text ...>这种写法就完全正确。
qq22345111 2008-09-02
  • 打赏
  • 举报
回复
wht6411
顶了
whycom 2008-09-02
  • 打赏
  • 举报
回复
combobox(document.all.<%=textid.clientId%>,lav,lat)
pcb_ghl 2008-09-02
  • 打赏
  • 举报
回复
document.getElementById('textid.ClientID')
满衣兄 2008-09-02
  • 打赏
  • 举报
回复
看一下运行之后的HTML代码你就知道区别了.
chaoren1641 2008-09-02
  • 打赏
  • 举报
回复
<asp:TextBox id="TextBox1" runat="server'></asp:TextBox>
js:
combobox('<%=TextBox1.ClientID%>',lav,lat)
lunber 2008-09-02
  • 打赏
  • 举报
回复
<asp:TextBox...>是服务器控件
<input type=text...>是客户端控件
在JS里调用没必要用服务器控件
  • 打赏
  • 举报
回复
最简单的办法是,运行出来看源文件,找到<asp:TextBox....>生成的<input type=text> 看看ID是什么,然后你再document.all.生成后的ID肯定没错
kent55782 2008-09-02
  • 打赏
  • 举报
回复
属性:runat="server"
vfan2010 2008-09-02
  • 打赏
  • 举报
回复
服务器控件最都会转化成客户端控件。
vfan2010 2008-09-02
  • 打赏
  • 举报
回复
js只与客户端的表单控件有关。
服务器控件最好都会转化成客户端控件。

分析js错误只管生成的HTML代码就行了。
hitpop 2008-09-02
  • 打赏
  • 举报
回复
按理是正确的. 除非你是用的自定义用户控件.也就是后缀名为ascx的页面... 在JS中就不能直接使用页面显示的那个ID名了.
加载更多回复(3)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧