Javascript:尝试在开关中使用var:“已声明var,但从未读取其值”

时间:2019-03-26 09:48:45

标签: javascript

在Java语言中,我在函数中声明了var xvar y

var x = document.getElementById("x").value;
var y = document.getElementById("y").value;

之所以这样做,是因为我需要多次使用document.getElementById

在此功能中,我还有一个开关盒。 在所有情况下,我都需要使用var xvar y

我得到警告,var xvar y永远不会被读取。

我之前使用过if-Statement,但我认为在这种情况下使用切换用例会更好。

当我使用document.getElementById("x").value代替var x时可以使用,但是我不想在10种情况下致电document.getElementById

function showOptions(s) {

    var x = document.getElementById("x").value; //"never used"
    var y = document.getElementById("y").value; //"never used"

        switch (s[s.selectedIndex].id) {

            case "case1":
                document.getElementById("x").value = "1"; //works
                document.getElementById("y").value = "2"; //works
                break;

            case "case2":
                x = "2"; //does not work
                y = "4"; //does not work
                break;
    }

2 个答案:

答案 0 :(得分:2)

您需要获取对象引用,而不是带有原始值的变量。

function showOptions(s) {
    var cpu = document.getElementById("x"); // take object
    var ram = document.getElementById("y");

    switch (s[s.selectedIndex].id) {
        case "case1":
            cpu.value = "1"; // use property of object
            ram.value = "2";
            break;
        case "case2":
            cpu.value = "2";
            ram.value = "4";
            break;
    }
}

答案 1 :(得分:2)

session.query(A).group_by(A.id).having(A.remaining_value > 20000)

元素的var cpu = document.getElementById("x").value; //"never used" 属性是一个字符串。当您将该属性的值复制到变量时,您将复制字符串。

value

如果将新值复制到变量,则更改变量的值。

不是对对象的cpu = "2"; //does not work 属性的引用。它与元素没有任何关系。

如果您复制的值是对对象的引用:

value

…然后您可以访问对象并更新属性:

var cpu = document.getElementById("x");