如何避免无法设置null的属性'innerHTML'?

时间:2017-01-22 19:15:26

标签: javascript html

我该怎么办这个错误?

  

未捕获的TypeError:无法在HTMLButtonElement.SprawdzHaslo(index.html:56)中设置null的属性'innerHTML'

当我尝试首先显示好的或中等的密码,然后是弱密码"HASŁO SŁABE"时,它会显示出来。

var x = document.getElementById("passwd");
var button = document.getElementById("button");
var check = /[0-9]/;

function SprawdzHaslo() {
  if (x.value.length == 0 || x.value.length == "") {
    document.getElementById("wynik").innerHTML = "<span style=color:red;> HASŁO PUSTE</span>";
  }

  if (x.value.length >= 4 && x.value.length <= 6 && x.value.match(check)) {
    document.getElementById("wynik1").innerHTML = "<span style=color:blue;> HASŁO ŚREDNIE</span>";
    
  } else if (x.value.length >= 7 && x.value.match(check)) {
    document.getElementById("wynik2").innerHTML = "<span style=color:green;> HASŁO DOBRE</span>";

  } else {
    document.getElementById("wynik3").innerHTML = "<span style=color:yellow;> HASŁO SŁABE</span>";
  }
}

button.onclick = SprawdzHaslo;
<form>
  <input type="text" id="passwd" />
  <button type="button" id="button">Weryfikuj</button>
</form>

<div id="wynik" />
<div id="wynik1" />
<div id="wynik2" />
<div id="wynik3" />

1 个答案:

答案 0 :(得分:1)

您的问题不在于JavaScript,而在于您的HTML。与某些元素(如imginputcheck the full list here)相反,div元素不会自动关闭,这意味着您必须为它们提供结束标记:{{1 }}

解析HTML的方式会使你的一些div相互嵌套(感谢@squint),因此代码在某些情况下工作而在其他情况下不工作。