操作类型麻烦

时间:2015-01-04 01:13:07

标签: javascript html function conditional-statements typeof

我有一个隐藏文本的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

3 个答案:

答案 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