Javascript IF语句的正确语法

Javascript IF语句的正确语法,javascript,syntax,if-statement,Javascript,Syntax,If Statement,有人能告诉我为什么这个IF语句不起作用吗?我正在使用jQuery和Firebug,但后者没有给我任何有用的信息 我只是试图在所有字段都已完成并且脚本每隔几秒钟运行一次以检查输入时显示一个“提交”按钮 我的代码摘录有点像这样: function checkForm(){ var userName = $('#name').val(); var userContent = $('#content').val(); var userEmail = $('#email').val

有人能告诉我为什么这个IF语句不起作用吗?我正在使用jQuery和Firebug,但后者没有给我任何有用的信息

我只是试图在所有字段都已完成并且脚本每隔几秒钟运行一次以检查输入时显示一个“提交”按钮

我的代码摘录有点像这样:

function checkForm(){
    var userName = $('#name').val();
    var userContent = $('#content').val();
    var userEmail = $('#email').val();

    // The following line shows me that the values for the fields are all getting picked up properly
    $('#report').html("userName: "+userName+"<br />userContent: "+userContent+"<br />userEmail: "+userEmail);

    // But the following line is throwing some kind of error
    if (userName == "" || userContent == "" || userEmail == ""){
        $('#update').slideDown();
    } else {
        $('#update').slideUp();
    }
}

$(document).ready(function(){

    $('#update').hide();
    setInterval('checkForm()' , 2000);

});
$(document).ready(function(){
    $('#submitfact').keyup(function(){
        var userName = $('#name').val();
        var userContent = $('#content').val();
        var userEmail = $('#email').val();

        $('#report').html(userName + "<br />" + userContent + "<br />" +  userEmail);

        if (userName == "" || userContent == "" || userEmail == ""){
            $('#update').slideUp();
        } else {
            $('#update').slideDown();
        }
    });
});
函数检查表(){
var userName=$('#name').val();
var userContent=$('#content').val();
var userEmail=$('#email').val();
//下一行显示字段的值都被正确地提取
$(“#报告”).html(“用户名:+userName+”
userContent:+userContent+”
userEmail:+userEmail); //但下面这句话是在抛出某种错误 如果(用户名=“”| |用户内容=“”| |用户电子邮件=“”){ $(“#更新”).slideDown(); }否则{ $(“#更新”).slideUp(); } } $(文档).ready(函数(){ $(“#更新”).hide(); setInterval('checkForm()',2000); });
还有我的HTML

<div id="report"></div>
<form id="submitfact">
  <div id="update">Update Database</div>
  <label><input id="name" name="name" type="text" value="" /><span>Fact submitter's name</span></label>
  <label><input id="email" name="email" type="text" value="" /><span>Fact submitter e-mail address</span></label>
  <label class="content"><span>Fact text</span><br /><textarea id="content" name="content"></textarea></label>
</form>

更新数据库
事实提交人姓名
事实提交者电子邮件地址
事实文本
编辑…

如果人们认为我没有提供错误消息是在浪费时间,我向他们道歉——但是Firebug根本没有给我任何有用的东西——如果是的话,我会把它发布在这里。我是一名经验丰富的php程序员,但对jQuery还相当陌生,所以我承认我仍然在掌握编写该语言和调试它。我想发布Firebug响应的屏幕截图,但作为一个新用户,我不被允许。。。所有我得到的是一个“红色错误圈/黄色播放三角形”图标在行号列(“脚本”选项卡)在我上面显示的行。。。除了“脚本”和“控制台”面板之外,没有其他内容,除非您可以告诉我在哪里可以查看其他内容

另一次编辑…

嗯,我看了克里斯托夫的建议,就把它修好了。这基本上是相同的解决方案,但我没有将其作为函数调用,而是将其设置为“内联”。我不完全确定这两种技术之间的区别是什么,也不确定这是否只是我遇到的一个局部问题,但我的新jQuery如下所示:

function checkForm(){
    var userName = $('#name').val();
    var userContent = $('#content').val();
    var userEmail = $('#email').val();

    // The following line shows me that the values for the fields are all getting picked up properly
    $('#report').html("userName: "+userName+"<br />userContent: "+userContent+"<br />userEmail: "+userEmail);

    // But the following line is throwing some kind of error
    if (userName == "" || userContent == "" || userEmail == ""){
        $('#update').slideDown();
    } else {
        $('#update').slideUp();
    }
}

$(document).ready(function(){

    $('#update').hide();
    setInterval('checkForm()' , 2000);

});
$(document).ready(function(){
    $('#submitfact').keyup(function(){
        var userName = $('#name').val();
        var userContent = $('#content').val();
        var userEmail = $('#email').val();

        $('#report').html(userName + "<br />" + userContent + "<br />" +  userEmail);

        if (userName == "" || userContent == "" || userEmail == ""){
            $('#update').slideUp();
        } else {
            $('#update').slideDown();
        }
    });
});
$(文档).ready(函数(){
$('#submitfact').keyup(函数(){
var userName=$('#name').val();
var userContent=$('#content').val();
var userEmail=$('#email').val();
$(“#报告”).html(用户名+”
“+userContent+”
“+userEmail); 如果(用户名=“”| |用户内容=“”| |用户电子邮件=“”){ $(“#更新”).slideUp(); }否则{ $(“#更新”).slideDown(); } }); });

我会看看你的其他评论,看看我是否可以简化它,但至少我现在有一个工作基线!谢谢大家抽出时间:)

尝试将您的评估更改为:

if (!userName  || !userContent  || !userEmail){
    $('#update').slideDown();
} else {
    $('#update').slideUp();
}

首先,它是真的抛出了一个错误,还是根本不起作用

根据我对代码的理解,您的if条件应为:

if (!userName === "" && !userContent === "" && !userEmail === ""){
    // show
    $('#update').slideDown();
} else {
    // hide
    $('#update').slideUp();
}
第二:用定时器来做这件事是个坏主意

引入eventhandler在inputvalue更改后进行检查要好得多:

$("input").change(function(){

  // if all inputs are filled, show Button, else hide it

});
附言。 深入了解Javascript:空字符串被认为是“falsy”,因此
用户名===”
可以写成
!用户名
。但是请注意,
未定义
0
NaN
也被视为“错误”!这意味着,你无法区分它们。出于这个原因,我更喜欢
username===”
()

它们确实是空字符串还是
null
?此外,我会在修改输入时进行此检查,而不是在计时器上。如果一行抛出错误,您认为发布错误是否有益?还有,Moo Juice是对的,你为什么用定时器来做这个?!“不起作用”不是一个问题描述。真是浪费每个人的时间。如果我知道这是什么,我会给你一个错误——Firebug只是挂在那条线上,没有详细说明这个问题。。。这就是为什么我要问你们:)我将编辑代码来检查keyup而不是计时器-谢谢你们的建议。顺便说一句,Moo Juice-我如何检查它们是否为null而不是空字符串?您可以通过一点数学进一步简化:
if(!(用户名和用户内容和用户电子邮件)){
谢谢Christoph-只要更改我的代码以匹配您的逻辑,在第一个实例中没有任何区别,但是按照您的第二个建议重写我的代码就成功了。我相应地修改了我的原始帖子。谢谢!:)是-我编辑了我的原始帖子以显示功能脚本…不确定是什么造成了区别,TBH-希望我在jQuery上学得更好时能解决这个问题:)你应该接受一个答案,向其他用户表明你的问题已经解决了。