js控制input的value时提示value未定义

    <input type='text' value='用户名' />
    <input type='text' value='用户名' />
    <script type="text/javascript">
        function values(){
            var get_input = document.getElementsByTagName("input");
            for (var i=0;i<get_input.length;i++)
            {    
                get_input[i].addEventListener('focus',function(){if(value==defaultValue){value='';}});
            }
        };
        values();
    </script>

上述代码为什么提示这一行:get_input[i].addEventListener('focus',function(){if(value==defaultValue){value='';}})中的value未定义?如何解决呢?谢谢

阅读 6k
4 个回答

你这里的value呢,是谁的value呢?

function values() {
                var get_input = document.getElementsByTagName("input");
                for(var i = 0; i < get_input.length; i++) {
                    get_input[i].addEventListener('focus', function() {
                        if(this.value == this.defaultValue) {
                            this.value = '';
                        }
                    });
                }
            };
            values();

{if(value==defaultValue){value='';}
这一行中的value和defaultValue都未在上下文中被声明,你读取了未加声明的变量去做比较,自然会有上述报错,

你可以尝试一下this.value ==this.defaultValue试试。这里的this指向的是你当前监听的input所对应的dom对象

你的value都没有申明,定义
var dom=get_input[i];
var value=dom.value;
dom.addEventListener('focus',function(){
var defaultValue='';
if(value==defaultValue){
value='';
}
});

你的value什么时候赋值了?也不是函数参数,怎么会已经定义了呢?

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