如果语句混淆 - 如何显示div if文件被选中

时间:2013-09-07 12:19:54

标签: javascript jquery html if-statement

如果选择了文件,则显示h1 div else隐藏它。也许我在调用alert()方面走错了方向。

<script type="text/javascript">
 function foo() {
    var f = document.getElementById("f1");
    var h = document.getElementById("h1");
    alert( ""==f.value ? " f == nothing selected" : "f = file selected");
    alert( ""==h.value ? " h == nothing selected" : "h = file selected");
    if(alert( ""==f.value "f = file selected"){
        $('#h1').show();
    }else{
        $('#h1').hide();
    }
  }
</script>
<style type="text/css">
#h1{
    display:none;
}
</style>
<input id="f1" type="file">
<input id="h1" type="file">

2 个答案:

答案 0 :(得分:1)

根据您在第一个文件输入中是否选择了文件来显示和隐藏第二个文件输入:

$('#f1').on('change', function() {
    $('#h1').toggle(this.value.length);
});

FIDDLE

答案 1 :(得分:0)

alert(anything)会返回undefined,所以说if(alert(anything)){真的没有意义。在你的情况下,你只是得到一个简单的语法错误,因为你有不平衡的括号,在你的alert()内你有两个语句""==f.value "f = file selected"

另外,要选择id="h1"元素,您需要选择器"#h1",而不是"h1"

试试这个:

if(""==f.value){
    $('#h1').show();
}else{
    $('#h1').hide();
}

演示:http://jsfiddle.net/X49Pq/(您的问题并未说明您何时/何时调用foo()函数,因此在我的演示中,我只是从单独的“测试”按钮运行相关代码,但您可以从f1或其他任何变更处理程序运行它。)