1. ホーム

nullのプロパティ'onclick'を設定できない エラー

2022-02-25 08:36:15

調査したところ、以下のようなjsコードが見つかりました。

<script>
    function deleteUser(id) {
        if (confirm("Are you sure you want to delete")){
        location="${pageContext.request.contextPath}/delUserServlet?id="+id;
        }
    }
    window.οnlοad=function () {
        //add a click event delSelect to the delete selected button
        document.getElementById("delSelect").οnclick=function () {
            //form submission
            /*document.getElementsByTagName("form")[1].submit();*/
            document.getElementById("formed").submit();
        }
        // Get the first cb firstCb

    }
    document.getElementById("firstCb").οnclick=function () {
        //Get all cb's in the next list
        var cbs = document.getElementsByName("uid");
        // iterate through each cb
        for (var i=0;i<cbs.length;i++){
            //this is the checked status of these cbs[i]=firstCb's checked
            cbs[i].checked=this.checked;
        }
    }

</script>

jsファイルをhead内に配置した場合、onclickイベントがバインドされているとこのエラーが発生します。W3Schoolはブラウザがボタンノードを先にロードしてからjsを実行するように書かれているので、ブラウザが上から下に解析すると、onclickバインドのボタンノードが見つからず、エラーを報告するようになっているからです。したがって、この問題を避けるために、jsファイルを一番下にロードする必要があります。または、以下のようにし、匿名関数 window.οnlοad=function(){ } にコードを記述します。

<script>
    function deleteUser(id) {
        if (confirm("Are you sure you want to delete")){
        location="${pageContext.request.contextPath}/delUserServlet?id="+id;
        }
    }
    window.οnlοad=function () {
        //add a click event delSelect to the delete selected button
        document.getElementById("delSelect").οnclick=function () {
            //form submission
            /*document.getElementsByTagName("form")[1].submit();*/
            document.getElementById("formed").submit();
        }
        // Get the first cb firstCb
        document.getElementById("firstCb").οnclick=function () {
            //Get all the cb's in the next list
            var cbs = document.getElementsByName("uid");
            // iterate through each cb
            for (var i=0;i<cbs.length;i++){
                //this is the checked status of these cbs[i]=firstCb's checked
                cbs[i].checked=this.checked;
            }
        }
    }
   

</script>