1

In Javascript I declared var x and var y in a function:

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

I did this because I need to use document.getElementById several times.

Also in this function I have a switch-case. In all cases I need to use var x and var y.

I get the warning that var x and var y is never read.

I used a if-Statement before but I think that using a switch-case is better in this situation.

When I use document.getElementById("x").value instead of var x it works but I don't want to call document.getElementById in 10 cases.

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;
    }
Ivar
  • 6,138
  • 12
  • 49
  • 61
loyd
  • 147
  • 1
  • 8

2 Answers2

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

The value property of an element is a string. When you copy the value of that property to a variable, you copy the string.

cpu = "2"; //does not work

If you copy a new value to the variable, then you change the value of the variable.

It is not a reference to the value property of an object. It has no connection to the element.

If the value you copied was a reference to an object:

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

… then you could access the object and update the property:

cpu.value = "2";
Quentin
  • 914,110
  • 126
  • 1,211
  • 1,335
2

You need to take the object reference, instead of a variable with a primitive value.

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;
    }
}
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392