基本Javascript如果不起作用

Basic Javascript If not working

本文关键字:不起作用 如果 Javascript 基本      更新时间:2023-09-26

我制作了一个基本的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>	

有什么建议吗?

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

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

 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。有关更多信息,请参阅此MDN页面。

这是因为innerHtml在span1变量的开始和结束处包含2个新行字符

之后

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

尝试添加:

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

你就会明白我在说什么。

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