javascript - 新手,求热心的前辈帮忙看看我这个if判断到底哪里出了问题,非常感谢!
PHPz
PHPz 2017-04-10 17:01:49
[JavaScript讨论组]

为什么这样可以

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

PHPz
PHPz

学习是最好的投资!

全部回复(6)
PHP中文网

这里面你把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并不在同一作用域,估计就是这个问题吧。。。

PHP中文网

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

怪我咯

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

inp.value = val;

把变量的值再还给inp

伊谢尔伦

var inp = document.getElementById('inp')
inp.onfocus = function(){

var val = inp.value;
if(val == ""){
    val = "今日特价优惠85折"; //这里的 val 变量是引用 inp.value 的值,对其重新赋值,不会改变 inp.value;
    inp.value = "今日特价油画85折"; //这样就可以了
}

};
onblur 同 onfocus

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号