基本Javascript如果不工作

时间:2015-02-03 18:48:16

标签: javascript if-statement

我已经制作了一个基本的javascript if声明,但它似乎不起作用。它不会替换Span'框中的文本,但没有if语句。

这是我的代码:



function show() {
  var span1 = document.getElementById("box").innerHTML;

  if (span1 == 'asdf') {
    document.getElementById("box").innerHTML = 'test';
  }
}

<span id = 'link'>
  <a onclick = 'show()' href = 'javascript:void(0);'>Show</a>
</span>
<span id = 'box'>
  asdf
</span>	
&#13;
&#13;
&#13;

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

您正在测试的字符串包含一些空格(即空格,换行符,制表符)以及所需的字符串。

比较时可以删除不必要的空白字符:

 if (span1.replace(/\s/g, '') === 'asdf') {

注意:使用正则表达式时要小心。例如,上述条件也会传递像“as df”这样的字符串。所以你可能想要改进一下。

另一种解决方案是使用String.prototype.indexOf()

if (span1.indexOf('asdf') >= 0) {

您还可以将String.prototype.match()与正确的正则表达式一起使用:

if (span1.match(/asdf/)) {

编辑:此外,如果不是您关心的IE8兼容性,如@ungalcrys所建议,您可以考虑使用String.prototype.trim()


旁注:请考虑使用.textContent代替.innerHTML。有关详细信息,请参阅this MDN page

答案 1 :(得分:1)

这是因为innerHtml在span1变量的开头和结尾包含2个换行符号

之后

var span1 = document.getElementById("box").innerHTML;

尝试添加:

alert('|' + span1 + '|');

您将完全了解我所指的内容。

您可以使用span1.trim()删除JS中该字符串之前和之后的空格。