为了账号安全,请及时绑定邮箱和手机立即绑定

关于取消null的问题

点取消的返回值不是Null么 那我在中间加一段

else if(score==null){

document.write("取消");

}

的代码 为什么点了取消后还是输出的  ”你要努力“ 而不是 ”取消“ 呢?

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>prompt</title>
  <script type="text/javascript">
  function rec(){
	var score; //score变量,用来存储用户输入的成绩值。
	score = prompt("请输入你的分数:") ;
	if(score>=90)
	{
	   document.write("你很棒!");
	}
	else if(score>=75)
    {
	   document.write("不错吆!");
	}
	else if(score>=60)
    {
	   document.write("要加油!");
    }
    else if(score<60)
	{
       document.write("要努力了!");
	}
    else if(score==null){
        document.write("取消");
    }
    else{
        document.write("error");
    }
  }
  </script>
</head>
<body>
    <input name="button" type="button" onClick="rec()" value="点击我,对成绩做评价!" />
</body>
</html>


正在回答

4 回答

你的代码错了,或者说不完整。这样写点击取消才会返回null并输出 else if(score==null){} 内的内容:


  <script type="text/javascript">

  function rec(){

    var score; //score变量,用来存储用户输入的成绩值。

    score = prompt("请输入你的分数:") ;

    if(score>=90&&score!=null)

    {

       document.write("你很棒!");

    }

    else if(score>=75&&score!=null)

    {

       document.write("不错吆!");

    }

    else if(score>=60&&score!=null)

    {

       document.write("要加油!");

    }

    else if(score<60&&score!=null)

    {

       document.write("要努力了!");

    }

    else if(score==null){

        document.write("取消");

    }

    else{

        document.write("error");

    }

  }

  </script>

1 回复 有任何疑惑可以回复我~
#1

顾五丑

尝试了一下,这种方法是可行的。请问原理是什么?能解释一下么?
2016-03-30 回复 有任何疑惑可以回复我~
#2

策神 回复 顾五丑

if(score>=90) { document.write("你很棒!"); } ....... 在if(score>=90)...中,变量score被赋值,并且变量类型是int类型,所以当你点击取消的时候返回的其实是"0",而不是"null",而if(score>=90&&score!=null)...中被赋值的score就表明是String类型,当点击取消的时候,返回的也就是"null",其实最主要的是看变量score是什么类型。
2016-03-30 回复 有任何疑惑可以回复我~
#3

策神 回复 顾五丑

所以还有另外一种写法,先把score定义为String类型: if(score==null){ document.write("你点击了取消!"); } else if(score>=90){ document.write("你很棒!"); }......由于回复不能超过300个字,后面的代码就不能写在这里了,你把下面的代码写完就可以,主要的是把if(score==null)放在最前面,else if(score>=90)...不变,结果也是和另外一种方式是一样的。
2016-03-30 回复 有任何疑惑可以回复我~
#4

顾五丑 回复 策神

非常感谢
2016-03-30 回复 有任何疑惑可以回复我~
#5

顾五丑 回复 策神

对了,请问当我我把这段代码拿到火狐上验证,发现按钮上的文字都是乱码,而且点击按钮也不能成功打开新网页,这是怎么回事?
2016-03-30 回复 有任何疑惑可以回复我~
#6

策神 回复 顾五丑

文字乱码一般都是编码的问题,你在浏览器里右击鼠标,选择编码格式,中文的是UTF-8或GB18030,如果点击按钮也不能成功打开新网页的话可能就是浏览器的兼容性,这就涉及到另外的层次了。
2016-03-30 回复 有任何疑惑可以回复我~
#7

pomelo9240 提问者

非常感谢!
2016-03-30 回复 有任何疑惑可以回复我~
查看4条回复

涉及了null当作判断值得时候转换的问题,它把null转换为“0"再判断了,所以要把else if(score<60 改为elsei f(score<60&&score>0||score==="0")就可以把输出“取消”的判定null移到最后了


0 回复 有任何疑惑可以回复我~
#1

jazia

为什么这里是score==="0",要三个=
2016-04-25 回复 有任何疑惑可以回复我~

在一般的语言中 一个“=” 表示赋值   即 把等号右边的值 赋给 左边的变量   两个“==”  才是我们平时认为的 即 等号左右两边相等    在逻辑判断中  ==  >=  <= != &&  ||  是常用 而且需要记住的写法 

0 回复 有任何疑惑可以回复我~
#1

pomelo9240 提问者

确实是赋值出现了问题 不过就算把"=="改过来了点击取消后还是没有输出我想要的“取消”文本..请问要怎么样编写代码才能实现点“取消”后也让它输出指定文本呢..
2016-03-30 回复 有任何疑惑可以回复我~

不是。。你赋值的方法是错的。判断score=NULL;应该用score==NULL;

0 回复 有任何疑惑可以回复我~
#1

pomelo9240 提问者

谢谢 我已经意识到了这个问题 不过我还是没有做出来想要的结果..怎么才能实现点击“取消”后输出指定文本呢 else if(socore==null)好像并不好用..
2016-03-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript入门篇
  • 参与学习       739781    人
  • 解答问题       9566    个

JavaScript做为一名Web工程师的必备技术,本教程让您快速入门

进入课程

关于取消null的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信