我正在尝试检查用户是否在HTML表单中实时输入了正确的字符串 这是HTML
<div class="col-md-2">
<input class="form-control" name="nbequipement" id="nbequipement" placeholder="" type="text">
<input type="button" value="Creer le tableau" onclick="GenerateTable()" />
</div>
这是创建表的javascript:
function GenerateTable()
{
var edValue = document.getElementById("nbequipement");
var s = edValue.value;
var table = document.createElement("table");
table.className = "table table-condensed table-striped table-bordered" ;
table.id = "table";
//CREATION DE L'ENTETE
var tableHeader = table.insertRow(-1);
var header1 = document.createElement("TH");
header1.innerHTML = "Nom d'hote";
//CREATION DE CHAQUE ROW DU TABLEAU
for (var i = 1 ; i <= s ; i++) {
//CREATION DE LA LIGNE
var row = table.insertRow(-1);
//CREATION DE CHAQUE CELLULES
var cell1 = row.insertCell(-1);
cell1.className = "col-md-1";
cell1.id='container'+ i +'hostname'+ i + '';
cell1.innerHTML = '<input class="input-sm" id="hostname' + i + '" placeholder="" type="text" onKeyPress="checkHostname('+cell1.id+', hostname'+i+')" onKeyUp="checkHostname('+cell1.id+', hostname'+i+')">' ;
}
var body = document.getElementById("tableSpace");
body.innerHTML = "";
body.appendChild(table);
你可以看到在“cell1”的InnerHTML中,有两个听众:onKeyPress&amp;的onkeydown
当调用函数“checkhostname()”时,我有这个错误:
Uncaught TypeError: Cannot read property 'value' of nullcheckHostname @ template.js:128onkeyup @ templates.php:1
这是功能:
function checkHostname(containerId, elementId) {
var textContainer = document.getElementById(elementId);
var texte = textContainer.value;
//CHECK THE VARIABLE "texte"
//var lblValue = document.getElementById("lblValue");
}
我不明白为什么会产生这个错误。有些人谈到在编写之前执行的代码,但在这种情况下似乎是不可能的。
答案 0 :(得分:0)
克里斯蒂的评论是你的回答。你在哪里:
cell1.innerHTML = '<input ... onKeyPress="checkHostname('+cell1.id+', hostname'+i+')" ...>' ;
如果 cell1.id 说“foo”而 i 是0,那么它将被视为标记:
<input ... onKeyPress="checkHostname(foo0, hostname0)" ...>
所以 foo0 和 hostname0 将被视为变量名,而不是字符串。所以你需要用引号括起来,例如
cell1.innerHTML = '<input ... onKeyPress="checkHostname(\''+cell1.id+'\', \'hostname'+i+'\')" ...>' ;
所以它被视为:
<input ... onKeyPress="checkHostname('foo0', 'hostname0')" ...>'
当然,这仍然依赖于运行代码时文档中存在的那些ID(以及正确的ID)的元素。你说是这样,所以它应该有效。
答案 1 :(得分:-1)
您的元素由于某种原因不存在。但你可以避免错误:
gzip
&#13;