新手,求热心的前辈帮忙看看我这个if判断到底哪里出了问题,非常感谢!

为什么这样可以图片描述

但是把 inp.value的值赋给一个变量代替它就不行了?
图片描述

阅读 4k
5 个回答

这里面你把inp.value赋值给了一个局部变量,但之后你是给这个局部变量赋的值,而不是给inp.value,你的inp.value不会受到影响。
所以这里if语句没有问题,问题出在了赋值语句没有写成inp.value
把if语句里的val改成inp.value就Ok了

inp.value是基本类型,基本类型赋值实现的是传值;
val = inp.value只是把inp.value的值给了val,所以你只是修改了val的值。
基础类型赋值是不会改变源数据的;只有引用类型的赋值是传址,修改才会引起源数据的变化。
题主可以去看看红宝书里javascript的数据类型那块儿的内容。
基本类型和引用类型

你在两个函数里分别声明了val,两个val并不在同一作用域,估计就是这个问题吧。。。

新手上路,请多包涵

你只是给局部变量val付了值,但是inp.value始终未曾改变。应该在if里面把val换成inp.val即可。

你这样写也行,不过都要在事件函数最后加上

inp.value = val;

把变量的值再还给inp

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题