为什么这样可以
但是把 inp.value的值赋给一个变量代替它就不行了?
PHP中文网2017-04-10 17:03:49
这里面你把inp.value
赋值给了一个局部变量,但之后你是给这个局部变量赋的值,而不是给inp.value
,你的inp.value
不会受到影响。
所以这里if语句没有问题,问题出在了赋值语句没有写成inp.value
。
把if语句里的val
改成inp.value
就Ok了
阿神2017-04-10 17:03:49
inp.value
是基本类型,基本类型赋值实现的是传值
;val = inp.value
只是把inp.value
的值给了val
,所以你只是修改了val
的值。
基础类型赋值是不会改变源数据的;只有引用类型的赋值是传址
,修改才会引起源数据的变化。
题主可以去看看红宝书里javascript的数据类型那块儿的内容。
基本类型和引用类型
伊谢尔伦2017-04-10 17:03:49
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