gpt4 book ai didi

javascript - 如何使用 javascript 动态查找控件的 ClientIDs?

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

我正在开发一个 javascript 函数,它接收三个控件的名称,然后在页面上找到它们。这些控件有五组。为简单起见,我想使用相同的函数并传入一组控件名称,然后让该函数通过 clientID 动态查找控件。有办法做到这一点吗?

这是我目前所拥有的......

        function InsertKeyword(keywordCtrl, subjCtrl, bodyCtrl) {
var ctrl;
if (OnSubj) ctrl = $find("<%=" + subjCtrl + ".ClientID%>");
if (OnBody) ctrl = $find("<%=" + bodyCtrl + ".ClientID%>");
if (OnSubj == 1 || OnBody == 1) {
var selectedIndex = document.getElementById(keywordCtrl).selectedIndex;
var selectedText = document.getElementById(keywordCtrl).options[selectedIndex].text;
var strSpan = '<u>' + selectedText + '</u>&nbsp';
ctrl.pasteHtml(strSpan);
}
}

这行不通,但它说明了我正在尝试做的事情。

如何使用 javascript 动态查找控件的 ClientID?

最佳答案

<%= %>是服务器端代码,而不是客户端代码,所以不是...

if (OnSubj) ctrl = $find("<%=" + subjCtrl + ".ClientID%>");
if (OnBody) ctrl = $find("<%=" + bodyCtrl + ".ClientID%>");

你应该有类似...

if (OnSubj) ctrl = $find("<%=subjCtrl.ClientID%>");
if (OnBody) ctrl = $find("<%=bodyCtrl.ClientID%>");

在哪里subjCtrlbodyCtrl是实际的服务器端控制对象。

让 JavaScript 工作的唯一方法是调用类似这样的函数...

InsertKeyword("my keyword", "<%=subjCtrl.ClientID%>", "<%=bodyCtrl.ClientID%>");

然后让你的 JavaScript 类似于...

function InsertKeyword(keywordCtrl, subjCtrl, bodyCtrl) {
var ctrl;
if (OnSubj) ctrl = $find(subjCtrl);
if (OnBody) ctrl = $find(bodyCtrl);

更新

根据 OP 的评论,不可能使用 <%= %>声明 OnClientClick 时的语法服务器端控件上的属性通过标记

以下将不起作用,<%=myCtrl.ClientID%>将完全按照发送到浏览器时的样子呈现...

<asp:Button runat="server" ID="test" OnClientClick="myFnc('<%=myCtrl.ClientID%>')"/>

相反,您需要通过这些方法之一通过代码隐藏(假定为 C#)设置属性...

test.OnClientClick = "myFnc('" + myCtrl.ClientID + "');";
test.OnClientClick = string.Format("myFnc('{0}');", myCtrl.ClientID);

关于javascript - 如何使用 javascript 动态查找控件的 ClientIDs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11453245/

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