元素如下:
<label>昵称:</label><input onloadstart="isHidden();" readonly="readonly" type="text" id="nickname" name="NickName" value="$msg.NickName"/> <input type="hidden" name="IsAnonymous" id="isanonymous" value="$msg.IsAnonymous"/>
想改变nickname的value,函数代码如下:
function isHidden() { var isAnonymous = document.getElementById("isanonymous").value; var nickname = document.getElementById("nickname").value; if (isAnonymous == true) { nickname = "匿名"; } }
但是为啥实现不了呢?
隐藏字段IsAnonymous的值是从数据库中取出来的bit类型的值
1、语句“var isAnonymous = document.getElementById("isanonymous").value”,只要值字符串是true、false,判断 if(isAnonymous == true) 是能生效的(js有自动装箱拆箱功能),如果不能生效,你可以简单转换下达到目的
2、语句“var nickname = document.getElementById("nickname").value;”是获得了昵称,但不是昵称的input对象,当你 “nickname = "匿名";”只是改变了这个变量的值,而没有改变input的value。
3、正确的写法:
function isHidden() { var isAnonymous = document.getElementById("isanonymous").value; var nickname = document.getElementById("nickname"); if (isAnonymous == true) { nickname.value = "匿名"; } }
这个函数应该在什么地方调用才能使页面一加载就能改变nickname的value值呢?
var nickname = document.getElementById("nickname").value;取的是值,不是对象。
document.getElementById("nickname").value="匿名";
1、后端代码输出
2、document.ready事件
这其实是参数传递的差异。如果对取出的nickname=value值,做改变,其实改的是nickname的值,不会影响dom对象。建议参考楼上两位的代码。
楼上已经指出问题原因了