Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript未捕获类型错误:无法读取属性';getElementsByTagName';空的_Javascript_Html_Sudoku - Fatal编程技术网

Javascript未捕获类型错误:无法读取属性';getElementsByTagName';空的

Javascript未捕获类型错误:无法读取属性';getElementsByTagName';空的,javascript,html,sudoku,Javascript,Html,Sudoku,我试图用JavaScript编写一个数独生成器,我想我做到了。 我的问题是在我用于游戏的输入标签中可视化生成的解决方案。 我将此函数放在html页面主体的属性onload上: function begin() { var container=document.getElementById("container"); var div; for(var i=0; i<9; i++) { div=document.createElement("div");

我试图用JavaScript编写一个数独生成器,我想我做到了。 我的问题是在我用于游戏的输入标签中可视化生成的解决方案。 我将此函数放在html页面主体的属性onload上:

function begin() {
    var container=document.getElementById("container");
    var div;
    for(var i=0; i<9; i++) {
        div=document.createElement("div");
        div.id=i;
        div.setAttribute("class", "square");
        for(var j=0;j<9;j++) {
            var square=document.createElement("input");
            square.setAttribute("type", "text");
            square.setAttribute("maxlength", "1");
            if(i%2==0) {
                square.setAttribute("class", "square1");
            }
            else {
                square.setAttribute("class", "square2");
            }
            div.appendChild(square);
        }
        container.appendChild(div);
    }
}
由于某些原因,变量容器未使用id
容器标识的元素初始化。有人能帮我吗

[编辑] 以下是HTML代码:

<!DOCTYPE html>
<html lang="it">
    <head>
        <meta charset="utf-8">
        <title>Sudoku</title>
        <style type="text/css">
            body {
                text-align: center;
            }
            #game {
                width: 21.2em;
                height: 21.15em;
                margin: auto;
                border: 2px solid #777777;
            }
            #container {
                width: 21.2em;
                height: 21.2;
                margin: auto;
            }
            .square {
                width: 6.94em;
                height: 6.94em;
                display: inline-block;
                border: 1px solid #A9A9A9

            }
            .square1 {
                height: 3em;
                width: 3em;
                background-color: white;
                border: 1px dashed #CBCBCB;
                color: black;
                display: inline-block;
            }
            .square2 {
                height: 3em;
                width: 3em;
                background-color: #DDDDDD;
                border: 1px dashed #CBCBCB;
                color: black;
                display: inline-block;
            }
            input {
                text-align: center;
            }
        </style>
        <script type="text/javascript" src="sudoku.js">
        </script>
    </head>
    <body onload="begin()">
        <div id="levels">
            <label><input type="radio">Easy</label>
            <label><input type="radio">Medium</label>
            <label><input type="radio">Hard</label>
        </div>
        <div id="buttons">
            <button id="newgame" onclick="newGame()">NEW GAME</button>
            <button id="solve">SOLVE</button>
        </div>
        <br>
        <div id="game">
            <div id="container">
            </div>
        </div>
        <br>
        <div id="time">
            <input id="currentTime" type="text" readonly="readonly">
        </div>
    </body>
</html>

数独
身体{
文本对齐:居中;
}
#游戏{
宽度:21.2米;
高度:21.15em;
保证金:自动;
边框:2px实心#777777;
}
#容器{
宽度:21.2米;
身高:21.2;
保证金:自动;
}
.广场{
宽度:6.94em;
高度:6.94em;
显示:内联块;
边框:1px实心#A9A9
}
.1平方米{
高度:3em;
宽度:3em;
背景色:白色;
边框:1px虚线#CBCBCB;
颜色:黑色;
显示:内联块;
}
.2平方米{
高度:3em;
宽度:3em;
背景色:#DDDDDD;
边框:1px虚线#CBCBCB;
颜色:黑色;
显示:内联块;
}
输入{
文本对齐:居中;
}
容易的
中等
硬的
新游戏
解决



按钮和输入单选项仍然未使用。

嘿,您正在搞乱标记名,因为您没有指定要在javascript中附加的输入类型。 因此,您必须按照如下方式进行操作:

    var nodeLists = document.getElementsByTagName("input");
    for(node in nodeLists){   
     if(nodeLists[node].getAttribute('type') == "text"){
        //write code here as you want
       }
       else{
       } 
   }

将html代码也添加到头部的问题中。就在样式标记之后。尝试在样式标记之后添加脚本,但仍然会出现相同的错误。出于某种原因,var容器保持为空。调用
showSudoku
的确切位置是哪里?代码很好,因此必须调用它。您能否在代码段中创建一个工作演示,以便我们看到问题所在?如果why
var container=document.getElementById(“container”)是否给出错误?您是在标题部分使用此begin()javascript代码还是不使用/我认为您应该这样做请更新您的答案,解释如何使用您建议的代码,以及如何修复错误。目前,这并不能为所问的问题提供一个明确的答案。请查看window.onload=function(){var container=document.getElementById(“container”);var div;for(var i=0;i
<!DOCTYPE html>
<html lang="it">
    <head>
        <meta charset="utf-8">
        <title>Sudoku</title>
        <style type="text/css">
            body {
                text-align: center;
            }
            #game {
                width: 21.2em;
                height: 21.15em;
                margin: auto;
                border: 2px solid #777777;
            }
            #container {
                width: 21.2em;
                height: 21.2;
                margin: auto;
            }
            .square {
                width: 6.94em;
                height: 6.94em;
                display: inline-block;
                border: 1px solid #A9A9A9

            }
            .square1 {
                height: 3em;
                width: 3em;
                background-color: white;
                border: 1px dashed #CBCBCB;
                color: black;
                display: inline-block;
            }
            .square2 {
                height: 3em;
                width: 3em;
                background-color: #DDDDDD;
                border: 1px dashed #CBCBCB;
                color: black;
                display: inline-block;
            }
            input {
                text-align: center;
            }
        </style>
        <script type="text/javascript" src="sudoku.js">
        </script>
    </head>
    <body onload="begin()">
        <div id="levels">
            <label><input type="radio">Easy</label>
            <label><input type="radio">Medium</label>
            <label><input type="radio">Hard</label>
        </div>
        <div id="buttons">
            <button id="newgame" onclick="newGame()">NEW GAME</button>
            <button id="solve">SOLVE</button>
        </div>
        <br>
        <div id="game">
            <div id="container">
            </div>
        </div>
        <br>
        <div id="time">
            <input id="currentTime" type="text" readonly="readonly">
        </div>
    </body>
</html>
    var nodeLists = document.getElementsByTagName("input");
    for(node in nodeLists){   
     if(nodeLists[node].getAttribute('type') == "text"){
        //write code here as you want
       }
       else{
       } 
   }