weixin_37698796
weixin_37698796
采纳率37.5%
2017-07-07 02:34

无法设置未定义或 null 引用的属性"onclick"

 <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>
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • showbo GoCityPass新加坡曼谷通票 4年前

    你放自定义控件里面了吧,id会变,改成这样

    asp.net 母版,自定义控件中的控件客户端ID变化解决办法

     document.getElementById("<%=btn1.ClientID%>").onclick = initRedirect;
    
    点赞 3 评论 复制链接分享
  • u014074697 张大教主 4年前
    //元素绑定事件的写法不对,我给你规范了一下,贴到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="点击按钮" />
    
    点赞 评论 复制链接分享
  • weixin_37698796 weixin_37698796 4年前

    解决了,原来是ID在客户端中的源代码中变了。改成document.getElementById("<%=btn1.ClientID%>").onclick = initRedirect;即可。但是为什么ID会变呢?

    点赞 评论 复制链接分享
  • qq_34993599 Tiny~ 4年前

    服务器控件绑定js要设置两个属性

    点赞 评论 复制链接分享