<div>
<asp:button id="btn1" runat="server" OnClick="btn1_click" text="js测试按钮"/>
</div>
<script type="text/javascript">window.onload = initAll;
function initAll() {
document.getElementById("btn1").onclick = initRedirect;//该行未取到"btn1",这是为什么???谢谢
function initRedirect() {
if (confirm("Are you sure you want to do that?")) {
alert("You said yes");
}
else {
alert("You said no");
}
}
}</script>
你放自定义控件里面了吧,id会变,改成这样
asp.net 母版,自定义控件中的控件客户端ID变化解决办法
document.getElementById("<%=btn1.ClientID%>").onclick = initRedirect;
服务器控件绑定js要设置两个属性
解决了,原来是ID在客户端中的源代码中变了。改成document.getElementById("<%=btn1.ClientID%>").onclick = initRedirect;即可。但是为什么ID会变呢?
//元素绑定事件的写法不对,我给你规范了一下,贴到html文件中可以看到效果
<meta charset="utf-8">
<script>
window.onload = initAll;
function initAll(){
var btn=document.getElementById("btn1");
if(btn.attachEvent){
document.getElementById("btn1").attachEvent('onclick', initRedirect);//兼容IE
}
else if(btn.addEventListener){
document.getElementById("btn1").addEventListener('click',initRedirect);//兼容谷歌和火狐
}
}
function initRedirect() {
if (confirm("Are you sure you want to do that?"))
{
alert("You said yes");
}
else { alert("You said no"); }
}
</script>
<input id="btn1" type="button" value="点击按钮" />