gpt4 book ai didi

javascript - getElementById 在一个环境中有效,但在另一个环境中无效

转载 作者:行者123 更新时间:2023-11-29 20:11:29 25 4
gpt4 key购买 nike

我有 javascript 代码可以为我点击一个按钮。它在机器 1 上托管时有效,但在机器 2 上托管时,.GetElementByID 调用返回 Null。

js代码是这样的:

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");
}
}

我的 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 上失败了。

在找出造成这种差异的原因时,任何人都可以建议可能要看的东西吗?我已经尝试将 ClientIDMode 更改为“静态”,除了更改第一条调试消息中的 clientID 外什么都不做。

最佳答案

确保“<%= btnReset.ClientID %>”表达式在两种情况下生成相同的 ClientID 值。看起来您正在 WebUserControl 中使用此标记,其 ID(以及按钮的 ClientID)是相应计算的。

作为通用解决方案,您可以使用我在 this 中的方法主题:

<asp:Button ... ID="btnReset" OnInit="btnReset_Init" />

protected void btnReset_Init(object sender, EventArgs e) {
Button btn = (Button)sender;
string script = string.Format("var _{0} = document.getElementById('{1}');", btn.ID, btn.ClientID);
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ANY_KEY", script, true);
}

<script language="javascript" type="text/javascript">
function ClickAButtonForMe() {
//alert(_btnReset);
_btnReset.click();
}
</script>

关于javascript - getElementById 在一个环境中有效,但在另一个环境中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9488868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com