我已经制作了一个基本的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;
有什么建议吗?
答案 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中该字符串之前和之后的空格。