Javascript未捕获类型错误:无法读取属性';getElementsByTagName';空的
我试图用JavaScript编写一个数独生成器,我想我做到了。 我的问题是在我用于游戏的输入标签中可视化生成的解决方案。 我将此函数放在html页面主体的属性onload上: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");
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
的确切位置是哪里?代码很好,因此必须调用它。您能否在代码段中创建一个工作演示,以便我们看到问题所在?如果whyvar 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{
}
}