为什么当我制作" var"并使它等于document.getElementById它不起作用?

时间:2015-06-28 13:18:50

标签: javascript variables

好的,我要问的是Tilte。我有那个代码:

function fromPassToText(inputId) {
        var theThing = document.getElementById(inputId).type;
        if (theThing  == "password")
            theThing  = "text";
        else
            theThing  = "password";
    }

并不是if。当我将所有theThing重命名为document.getElementById(inputId).type时,它就可以了。

我是新人,如果你帮助我,我会贬低它。

谢谢!

3 个答案:

答案 0 :(得分:2)

当你这样做时

theThing  = "text";

theThing  = "password";

您只是更改本地变量。我假设您需要更改DOM元素的属性,唯一的方法是使用document.getElementById(inputId).type =

顺便说一下,这也可行

function fromPassToText(inputId) {
    var theThing = document.getElementById(inputId).type;
    if (theThing  == "password")
        document.getElementById(inputId).type = "text";
    else
        document.getElementById(inputId).type = "password";
}

答案 1 :(得分:1)

我很确定,你的代码是"进入if语句"。

我想,你在想,为什么这种类型没有改变。它没有,因为你只改变变量。

您想要做的是:

function fromPassToText(inputId) {
    var theThing = document.getElementById(inputId);
    if (theThing.type  == "password")
        theThing.type  = "text";
    else
        theThing.type  = "password";
}

这样您就可以更改元素,而不仅仅是变量。

答案 2 :(得分:0)

到目前为止,答案只是部分正确。

他们是正确的,这是行不通的:

var theThing = document.getElementById(inputId).type;
theThing  = "text";

这是因为你得到一个原始类型值(一个字符串),Javascript按值传递它们。

但是,工作:

var theInput = document.getElementById(inputId);
theInput.type  = "text";

这是因为您将theInput设置为对象,并且对象通过引用传递。因此,对于所有意图和目的,theInput是元素本身。