如何在window.open方法中传递参数。
<table id="tblUsers" cellspacing="0" >
<asp:Repeater ID="repUsers" runat="server">
<ItemTemplate>
<tr><td> <a ID="hlUser" runat="server" Target="_new" onclick="return OpenWindow();" ><%# Eval("Username") %></a></td></tr>
</ItemTemplate>
</asp:Repeater>
</table>
function OpenWindow() {
var toUsername = document.getElementById("hlUser");
window.open("ChatWindow.aspx?username=" + toUsername.value, "ChatWindow", "width=350,height=250");
return null;
}
答案 0 :(得分:1)
我对asp.net知之甚少,但看起来你有一个javascript问题。 document.getElementById("hlUser")
不是<a>
元素吗?它没有value
属性。
如果要在<a>
中获取文本元素,可以查询text
属性或innerHTML
。
<a id="hlUser">somevalue</a>
document.getElementById('hlUser').text
将返回somevalue
更新:
在转发器中放置<a>
使得无法事先知道其中的任何id
属性。我建议传递<a>
元素或this.text
本身,甚至使用相同的服务器端脚本将值传递给函数。
更新2:我发现此问题可能与How do I pass a variable using window.open()?
重复答案 1 :(得分:0)
只需更改&amp;到+:
function OpenWindow() {
var toUsername = document.getElementById("hlUser");
window.open("ChatWindow.aspx?username=" + toUsername.value, "ChatWindow", "width=350,height=250");
return null;
}
在这个级别的代码中,你使用的是Javascript而不是VB,而VB则使用&amp;连接是编程语言中的一个奇怪现象。