使用javascript的非常基本的程序中出现错误

使用javascript的非常基本的程序中出现错误,javascript,Javascript,如果person不是null,则输出第一个条件,否则显示警报框。但是,如果输入了null,它不会执行第二个条件,而是继续执行第一个条件 <!DOCTYPE html> <html> <body> <p>Click the button to demonstrate the prompt box.</p> <button onclick="myFunction()">Try it</button> <p

如果
person
不是
null
,则输出第一个条件,否则显示警报框。但是,如果输入了
null
,它不会执行第二个条件,而是继续执行第一个条件

<!DOCTYPE html>
<html>
<body>

<p>Click the button to demonstrate the prompt box.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
    var person = prompt("Please enter your name");

    if (person != null) {
        document.getElementById("demo").innerHTML =
        "Hello " + person + "! How are you today?";
    }
    else if (person == null ){
            alert("How dare you ?>");
    }
}
</script>

</body>
</html>

单击按钮以演示提示框

试试看

函数myFunction(){ var person=提示(“请输入您的姓名”); if(person!=null){ document.getElementById(“demo”).innerHTML= “你好”+人+“!你今天好吗?”; } else if(person==null){ 警惕(“你怎么敢?>”; } }
问题很可能是,当您认为输入空值时,实际上并没有输入空值

null
是特殊值:它是一个特殊值,表示没有值。不要与
“null”
(包含单词“null”的字符串)或“”(空字符串)混淆

prompt()
仅在取消时返回
null
。当您“输入null”时,可能会以“null”或“”结尾,这取决于您是否在框中键入任何内容

见:

因此,您的固定代码是:

<!DOCTYPE html>
<html>
<body>

<p>Click the button to demonstrate the prompt box.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
    var person = prompt("Please enter your name");

    if (person != "") {
        document.getElementById("demo").innerHTML =
        "Hello " + person + "! How are you today?";
    } else {
        alert("How dare you ?>");
    }
}
</script>

</body>
</html>

单击按钮以演示提示框

试试看

函数myFunction(){ var person=提示(“请输入您的姓名”); 如果(人!=“”){ document.getElementById(“demo”).innerHTML= “你好”+人+“!你今天好吗?”; }否则{ 警惕(“你怎么敢?>”; } }
myFunction()未定义按钮何时分配事件处理程序,因此请将脚本放入head标记中。为了便于检查,字符串值需要放“”而不是null

我修改了你的代码试试这个它会工作的…它对我来说很好

<!DOCTYPE html>
    <html>
    <head>
         <script>
    function myFunction() {
        var person = prompt("Please enter your name");

        if (person != "") {
            document.getElementById("demo").innerHTML =
            "Hello " + person + "! How are you today?";
    }
        else {
                alert("How dare you ?>");
    }
    }
    </script>
    </head>
    <body>

    <p>Click the button to demonstrate the prompt box.</p>

    <button onclick="myFunction()">Try it</button>

    <p id="demo"></p>

    </body>
    </html>

函数myFunction(){
var person=提示(“请输入您的姓名”);
如果(人!=“”){
document.getElementById(“demo”).innerHTML=
“你好”+人+“!你今天好吗?”;
}
否则{
警惕(“你怎么敢?>”;
}
}
单击按钮以演示提示框

试试看


将您的
脚本标签
包装在
头标签内
。因为为按钮分配事件处理程序时,不会定义
myFunction()
。或者使用
addEventListener
绑定事件。这里真的需要吗?我正在使用w3学校试用它只要把它改成我的脚本run@RajaprabhuAravindasamy那是不对的。@torazaburo是吗?似乎我有一个误解。@RajaprabhuAravindasamy
myFunction()
不需要在分配给
onclick
处理程序时定义。它需要在调用处理程序时定义,即单击发生时。在任何情况下,您担心的问题都与OP报告的行为不匹配。如果问题是您提到的,则会导致未定义的函数错误。对,但正如我所解释的,“不输入任何内容”实际上是为您获取空字符串,而不是空字符串。要获得您显然想要的行为,请更改
!=空
!=“
请注意,您不需要在“else-if”块中放置相反的条件,您可以(如果您只有一个分支)单独使用else(这当然意味着与
if
中给出的条件相反),但是
提示符
取消时会返回null。我修改了答案,请尝试将它与null进行比较,但也与null字符串值进行比较,这样您就需要比较person==“”和person=“
myfunction
分配给
onClick
时不需要定义它。它只需要定义点击实际发生的时间,实际上就是这样。如果用户取消警报,这将如何表现?另外,当您仅仅分配元素的文本内容时,为什么要使用
innerHTML
?另外,请正确缩进代码。