【发布时间】:2011-06-30 07:44:51
【问题描述】:
我在我的用户控件中创建了一个下拉列表,请参阅下面的源代码,
<asp:DropDownList ID="ddlInd" runat="server" DataSourceID="indXmlDS" DataTextField="text" DataValueField="text"></asp:DropDownList>
在 Page_load 中我已经这样做了:
protected void Page_Load(object sender, EventArgs e)
{
ClientScriptManager cs = Page.ClientScript;
cs.RegisterStartupScript(this.GetType(), "myScript", "<script language='javascript' src='../Scripts/myJS.js'></script>");
ddlInd.Attributes["onchange"] = "showTextbox()";
}
如果我想在我的外部 javascript 文件 myJS.js 中引用这个控件,我应该使用什么代码?
我曾尝试使用document.getElementById("<%=ddlInd.ClientID %>"),但它会返回NULL。
有人可以帮忙吗?谢谢
编辑:
不确定在此处附加该 myJS.js 文件是否有帮助
function showTextbox() {
var sid = <%=ddlInd.ClientID %>;
//alert(sid);
var s = document.getElementById('<%=ddlInd.ClientID %>'); // <-- problem here
alert(s);
if (s.options[s.selectedIndex].value == "Other") {
myDiv.style.display = "inline";
alert("display");
}
else {
myDiv.style.display = "none";
alert("none");
}
}
EDIT2:
我找到了一种解决方法,即在用户控制页面中嵌入脚本,而不是使用外部脚本文件。谢谢大家的建议。他们都非常有帮助。
另外修改后的js脚本如下,可以正常运行:
function showTextbox(objID) {
var s = document.getElementById(objID);
var div = document.getElementById("myDiv");
if (s.options[s.selectedIndex].value == "Other") {
div.style.display = "inline";
}
else {
div.style.display = "none";
}
}
【问题讨论】:
-
是 ddlInd.ClientID 返回 null 还是 getElementById?
-
@paolo 我认为它的 document.getElementByID 返回 NULL
-
您在哪里以及如何尝试将
document.getElementById("<%=ddlInd.ClientID %>")作为showTextbox的参数?查看ddlInd和 TextBox 所在的用户控件的相关部分也可能会有所帮助。showTextbox不是也需要TextBox的ID吗? -
如果您评论您在页面加载中所做的所有事情怎么办?还是返回NULL?
-
@Tim js 函数 showTextbox() 位于 Scripts 文件夹下的 myJS.js 文件中,从 Page_Load 事件中编写的代码可以看出。
标签: c# javascript .net asp.net drop-down-menu