扫码关注官方订阅号
为什么这样可以
但是把 inp.value的值赋给一个变量代替它就不行了?
学习是最好的投资!
这里面你把inp.value赋值给了一个局部变量,但之后你是给这个局部变量赋的值,而不是给inp.value,你的inp.value不会受到影响。所以这里if语句没有问题,问题出在了赋值语句没有写成inp.value。把if语句里的val改成inp.value就Ok了
inp.value
val
inp.value是基本类型,基本类型赋值实现的是传值;val = inp.value只是把inp.value的值给了val,所以你只是修改了val的值。基础类型赋值是不会改变源数据的;只有引用类型的赋值是传址,修改才会引起源数据的变化。题主可以去看看红宝书里javascript的数据类型那块儿的内容。基本类型和引用类型
传值
val = inp.value
传址
你在两个函数里分别声明了val,两个val并不在同一作用域,估计就是这个问题吧。。。
你只是给局部变量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
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
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并不在同一作用域,估计就是这个问题吧。。。
你只是给局部变量val付了值,但是inp.value始终未曾改变。应该在if里面把val换成inp.val即可。
你这样写也行,不过都要在事件函数最后加上
把变量的值再还给inp
var inp = document.getElementById('inp')
inp.onfocus = function(){
};
onblur 同 onfocus