【问题标题】:GetElementById can't get valueGetElementById 无法获取值
【发布时间】:2013-10-15 08:47:07
【问题描述】:

你知道这是为什么

function deleteInputOnClick(input){
    champ = document.getElementById(input);
    if(champ.value =='E-mail'){
        champ.value = "";
    }
}

可以这样工作

function deleteInputOnClick(input){
    champ = document.getElementById(input).value;
    if(champ=='E-mail'){
        champ= "";
    }
}

没有?

这可能是一个愚蠢的小错误,但我真的不知道它可能在哪里。

谢谢

【问题讨论】:

    标签: javascript get element


    【解决方案1】:

    您不是以第二种方式将值设置回元素,您只是将其分配给局部变量,您仍然需要做document.getElementById(input).value = champ;

    【讨论】:

    • 第一种方式是正确的方式,因为champ变成了一个DOM对象,你可以随时操作它的值,而第二种方式你可以将值提取到一个变量中,所以你不能把它设置回来使用相同的变量
    【解决方案2】:

    这是因为 champ 是一个变量,它已被分配了 input 元素的值。

    改变它的值不会改变输入的值(因为它不是双向绑定,你只是给它赋值

    所以你需要直接定位inputvalue属性来改变它的值


    如果您试图避免在很多地方使用.value,您可以缓存input 元素及其value 以供不同用途..

    function deleteInputOnClick(input){
        var champ = document.getElementById(input),
            value = champ.value;
        if(value=='E-mail'){
            champ.value = "";
        }
    }
    

    【讨论】:

      【解决方案3】:

      document.getElementById(input).value 返回一个字符串值,而document.getElementById(input) 返回一个引用(一个对象)。所以在一种情况下,只有局部变量的值发生了变化,在另一种情况下,原始对象仍然链接到 DOM 值。

      看看这个问题:Javascript by reference vs. by value

      【讨论】:

        猜你喜欢
        • 2012-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        • 2019-05-02
        • 2016-04-26
        • 1970-01-01
        相关资源
        最近更新 更多