<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script type="text/javascript">
function Test1(w) {
document.getElementById('<%=TextBox1.ClientID%>').style.width = w;
return false;
}
Test1(10); // This line arises an error. Why ?
</script>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input id="Button1" type="button" value="button" onclick="Test1(10)" />
</asp:Content>
从脚本调用函数Test1(10)时出现错误。但当它调用点击按钮时,它工作正常。如何从脚本调用该函数(或者我如何访问onload()
中的ASP.NET Content Page
函数)?
答案 0 :(得分:1)
当你在<script>
块内调用“Test1()”时,该输入字段还不是DOM的一部分。因此,对getElementById()
的调用将返回null
,函数的第一行将失败。
如果您在文本框之后将<script>
块移动到,它应该可以正常工作。
编辑 - 您也可以在宽度上明确附加“px”。
答案 1 :(得分:0)
试试这个
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script type="text/javascript">
function Test1(w) {
document.getElementById('<%=TextBox1.ClientID%>').style.width = w;
return false;
}
window.onload = function() {
Test1(10); // This line arises an error. Why ?
}
</script>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input id="Button1" type="button" value="button" onclick="Test1(10)" />
</asp:Content>
答案 2 :(得分:0)
这是因为在脚本中执行Test1时文本框不存在。您必须将调用放在document.ready函数中,或者在文本框后面向下移动。
答案 3 :(得分:0)
首先,您每次要执行javascript代码时,甚至直接从标记以太中来自您必须等待加载dom级别的事件。 所以可以这样做:
<script type="text/javascript">
window.onload =function()
{ /* code */ }
</script>
或者在body标签的“onload”事件中执行代码: 喜欢
<body onload="Test1(10);">
</body>
或者如果你使用JQuery,你可以使用上面的内容:
<script type="text/javascript">
$(document).ready(function(){
/* Code to execute */
});
</script>