Javascript getElementById可以在一个环境中工作,但不能在另一个环境中工作
我有javascript代码,可以为我点击一个按钮。 当托管在计算机1上时,它工作,但当托管在计算机2上时,.GetElementByID调用返回Null js代码如下所示:Javascript getElementById可以在一个环境中工作,但不能在另一个环境中工作,javascript,asp.net,iis,Javascript,Asp.net,Iis,我有javascript代码,可以为我点击一个按钮。 当托管在计算机1上时,它工作,但当托管在计算机2上时,.GetElementByID调用返回Null js代码如下所示: function ClickAButtonForMe() { var btn = null; var btnClientID = '<%= btnReset.ClientID %>'; //this comes back with a valid clientID on **both*
function ClickAButtonForMe() {
var btn = null;
var btnClientID = '<%= btnReset.ClientID %>';
//this comes back with a valid clientID on **both** machines
alert("btnClientID=/" + btnClientID + "/, nodevalue=/" + nodeValue + "/");
if (0 < btnClientID.length) {
btn = document.getElementById(btnClientID);
}
if (btn != null) {
//on machine 1, this works as expected
btn.click();
}
else {
//on machine 2, i come here
alert("button not found");
}
}
函数单击abutnotforme(){
var btn=null;
var btnClientID='';
//这会在**两台**机器上返回一个有效的clientID
警报(“btnClientID=/”+btnClientID+“/,nodevalue=/”+nodevalue+“/”;
if(0
我的ascx文件中的按钮声明如下所示:
<div id="div_Reset" class="eventManagementButtonWrapper" runat="server">
<div>
<asp:Button class="eventManagementButton" ID="btnReset" ValidationGroup="None" runat="server"
Text="Reset" />
</div>
</div>
换句话说,我可以在和环境中为我的按钮获取clientid。但当我试图抓住按钮时,它在机器2上失败了
在找出这种差异的原因时,有人能提出一些可能的建议吗?我已尝试将clientID更改为“Static”,它除了在第一条调试消息中更改clientID外,什么都不做。确保“”表达式在这两种情况下都生成相同的clientID值。看起来您正在WebUserControl中使用此标记,其ID(以及按钮的ClientID)将相应地计算
作为一个通用解决方案,您可以使用我的thread方法:
受保护的void btnReset_Init(对象发送方,事件参数e){
按钮btn=(按钮)发送器;
string script=string.Format(“var{0}=document.getElementById('{1}');”,btn.ID,btn.ClientID);
Page.ClientScript.RegisterStartupScript(Page.GetType(),“任意_键”,脚本,true);
}
函数ClickAbutInfo(){
//警报(_btnReset);
_btnReset.click();
}
这很奇怪。
您是否尝试过将ClientIDMode更改为“Static”并将其更改为:
'<%= btnReset.ClientID %>'
一旦ClientIDMode是“静态”的,asp就不会向控件id添加任何内容,而是让它保持您命名的状态
根据我的经验,在不同的机器上,只有一种情况会导致这种情况:
“您在DOM未就绪时调用ClickAbutForm函数”以下是一些可能出现错误并导致特定于环境的差异的建议,请注意:大多数建议并不仅仅针对您的问题
- 清除所有浏览器上的缓存李>
- 检查所有浏览器的版本
- 比较浏览器中的输出HTML
- 是同一个(或相关的相似)用户登录的
- 他们的观点是一致的吗
- 是同一个url,还是同一代码的两个不同托管副本?
- 如果这是代码的不同副本,请确保其版本相同
- 根据环境(和应用程序类型)执行IIS重置以确保加载了正确的DLL李>
- 您是否在其中一个环境上运行调试/发布版本
- 您是否在其中一个环境上运行调试
- 在这两种情况下DOM是否都已完全加载?(比赛条件?)
click()
是IE特有的。@Diodeus-更大的画面是屏幕上有两个TreeView控件。单击按钮可将选定节点从左侧的树滑动到右侧的树中。我试图通过在用户单击树本身时触发该操作来自动滑动它们。该功能在我的本地计算机上工作,但在部署计算机上不工作。@GGG-坦率地说,可能有很多不同之处-一个是我的本地计算机,另一个是服务器。显示的代码目前在我本地的firefox中运行,但在IE和服务器上的firefox中失败。我不。。。我想我帮不了你。我无法理解为什么web浏览器会在服务器上运行:(这是有道理的,但这是一个用户发起的操作,在页面完成加载后的几秒钟内发生。是否有任何东西会导致DOM长时间未完成?
'<%= btnReset.ClientID %>'
btnReset