我想在服务器上运行某个元素之后在特定元素之后添加一个表元素,但是当我尝试访问该元素的ID时,它被视为字符串
我尝试在警报中显示ID或元素,但它是字符串 我试图检查堆栈溢出的其他帖子,但他们都说访问方式与我产生字符串的方式相同 我尝试将与字符串相同的代码放在aspx文件中,并且它可以正常工作,所以我知道<%= message.ClientID%>
没问题在aspx文件中
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div class="Manager">
<p id="message" runat="server" class="caption">
There aren't any users in the database
</p>
<form runat="server">
<asp:HiddenField id="hfData" runat="server"/>
</form>
<script src="js/Manager.js" ></script>
</div>
</asp:Content>
在Manager.js中
var message = document.getElementById('<%=message.ClientID %>');
message.parentNode.insertBefore(tbl, message.nextSibling);
当我看到它的值时,消息等于未定义 并且以下代码无法执行
我尝试了以下尝试访问ID
var str = '<%=message.ClientID%>';
alert(str);
,但它以字符串形式警报<%= message.ClientID%> 它应该产生ContentPlaceHolder1_message
的输出答案 0 :(得分:3)
首先,尝试将Manager.js脚本直接添加到对我有用的aspx页面。恐怕此时在服务器上执行.aspx页时,由于呈现该页,因此不包含Manager.js。
<p id="message" runat="server" class="caption">
There aren't any users in the database
</p>
<script type="text/javascript">
var str = '<%=message.ClientID%>';
alert(str);
</script>
答案 1 :(得分:1)
我设法通过在服务器端用剃刀代码创建一个javascript变量,然后在外部javascript文件中使用它来解决了该问题
aspx
<script type="text/javascript">
var messageId = '<%=message.ClientID%>';
</script>
在Manager.js中
var message = document.getElementById(messageId);
message.parentNode.insertBefore(tbl, message.nextSibling);