我有一个隐藏文本的div。只有当另一个div的文本内容等于一个字符串时,才能显示此文本。为此,我编写了以下函数:
function show() {
if(typeof genDiv.innerHTML == "string") {
showDiv.innerHTML = fullhiragana[h];
} else {
alert("Please generate the Romaji before requesting the Hiragana to be displayed.");
}
}
//fullhiragana is an array that has the data that 'showDiv' is supposed to display.
'h' is a var that randomly picks a string from fullhiragana.//
在某种程度上,它有效。如果我按下按钮,它会显示文本,但是这样做,无论其他div中的内容类型是。如果第一个div中有 no 内容,它甚至可以工作。也许我构建了if条件错误?请帮忙! 看到这个打印屏幕,以进一步参考问题; http://prntscr.com/5o7q59
答案 0 :(得分:1)
typeof(genDiv.innerHTML ==" string")始终为true。所以它是真的即使div是空的或者有一个数字或算术运算符,如(+,&,%, - )等......
如果第一个div中没有内容,genDiv.innerHTML是空字符串("")。
您可以执行以下操作来检查输入字段中是否输入了某些内容:
if(genDiv.innerHTML.length>0) {
showDiv.innerHTML = fullhiragana[h];
}
此外,如果要获取输入字段的内容,最好使用genDiv.value而不是genDiv.innerHTML。
答案 1 :(得分:0)
关于innerHTML.length的用户,这应该适用于现代浏览器,但请注意,即使没有文本,一些较旧的(IE)浏览器也可能返回true,因为innerHTML属性可能包含空格。在检查该条件之前,您可能希望清除前导和尾随空格。
答案 2 :(得分:0)
根据raneshu的回答,一个空的String
对象解析为JavaScript中的 falsy 值,即可以String
通过类型转换为Boolean
}:
if (!container.innerHTML) {
console.log('#container has no content!');
}
有关工作示例,请参阅this JSFiddle。
此外,here提供了有关JavaScript中虚假值的一些信息,包括Strings
。