创建whit js后无法在文本框内写入

时间:2018-01-22 14:24:05

标签: javascript

嗨所以我做了类似桌子的东西我需要它用于我的矩阵但是在创建了列之后我发现我无法在其中写入



function create(param) {

    var i, target = document.getElementById('results');
	var matrix = []
    target.innerHTML = '';

    for(i = 0; i < param; i += 1) {
	target.innerHTML +='<br>'
	 for(var j=0;j<param;j+=1)
        target.innerHTML += '<input type="text"id="' + "value_" + i + "_" + j + '">';
    }
}
&#13;
<html>
<head>
</head>
<body>
<button onclick="create(5)" style="width:300px;height:30px;"/><br><br>
<div id="results"> </div>
</body>
</html>
&#13;
&#13;
&#13;

我需要修改/写入/删除才能在其中写入?

2 个答案:

答案 0 :(得分:2)

<button>不是自我结束标记。您需要包含</button>。否则,标签将在文档结束前单独关闭。这会导致结果div捕获写入表的onclick事件。结果是单击文本框会导致重写表。

&#13;
&#13;
function create(param) {

    var i, target = document.getElementById('results');
	var matrix = []
    target.innerHTML = '';

    for(i = 0; i < param; i += 1) {
	target.innerHTML +='<br>'
	 for(var j=0;j<param;j+=1)
        target.innerHTML += '<input type="text"id="' + "value_" + i + "_" + j + '">';
    }
}
&#13;
<html>
<head>
</head>
<body>
<button onclick="create(5)" style="width:300px;height:30px;"></button><br><br>
<div id="results"> </div>
</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

为什么?

每次单击输入时都会运行功能。 这会覆盖输入 - &gt;你不能填补它。

这是一个修补程序,如果你想运行“创建”功能不止一次,修复程序对你不起作用。

更好的修复:始终检查您的标签并关闭它们并确保输入不在HTML元素中,运行create func。

var runnedCreate = false;

function create(param) {

    if (runnedCreate != true ) {
        var i, target = document.getElementById('results');
	    var matrix = []
        target.innerHTML = '';

        for(i = 0; i < param; i += 1) {
	    target.innerHTML +='<br>'

	        for(var j=0;j<param;j+=1) {
                target.innerHTML += '<input type="text"id="' + "value_" + i + "_" + j + '">';
            }
        }
        runnedCreate = true;
   }
}
<html>
<head>
</head>
<body>
<button onclick="create(5)" style="width:300px;height:30px;"/><br><br>
<div id="results"> </div>
</body>
</html>