Доступ к объекту, не работающему с переменной - PullRequest
0 голосов
/ 19 марта 2019

Это кажется простым, но я бьюсь о стену.Мой код получает веса, обращается к массиву объектов, чтобы получить значение, а затем вычисляет результат, используя это значение * вес.Но доступ к объекту не работает с переменной.

 function calc(){
var gender;
if(document.getElementById("male").checked){
    gender = "mensList";
} else if (document.getElementById("female").checked){
    gender = "womensList";
} else {
    alert("Please select a gender");
    return false;
}
var kg = parseInt(document.getElementById("bwKg").value);
var grams = parseFloat(document.getElementById("bwGrams").value);
var bw = parseFloat(kg + grams);
var lifted = parseFloat(document.getElementById("liftWeight").value);

var theValue = womensList[bw]; // This works
var theValue = mensList[bw];   // This also works
var theValue = gender[bw];     // This doesn't work
var theValue = gender + "[\"" + bw + "\"]" // Nor this

var result = theValue * lifted;
document.getElementById("result").textContent = result;
 }

 var womensList = {
  40.0: "1.4936",
  40.1: "1.4915",
  40.2: "1.4894",
  40.3: "1.4872",
  40.4: "1.4851",
  // ......... etc
  150.7: "0.7691",
  150.8: "0.7691",
 150.9: "0.7691"
};

var mensList = {
  40.0: "1.3354",
  40.1: "1.3311",
  40.2: "1.3268",
  40.3: "1.3225",
  40.9: "1.2975",
  // ......... etc
  205.7: "0.5318",
  205.8: "0.5318",
  205.9: "0.5318"
 };

Ответы [ 2 ]

1 голос
/ 19 марта 2019

В вашем коде вы устанавливаете gender в string не переменная.

if(document.getElementById("male").checked){
    gender = "mensList";
} else if (document.getElementById("female").checked){
    gender = "womensList";
}

Должно быть

if(document.getElementById("male").checked){
    gender = mensList;
} else if (document.getElementById("female").checked){
    gender = womensList;
}
1 голос
/ 19 марта 2019

Вот ваша проблема:

if(document.getElementById("male").checked){
    gender = "mensList";                         //gender now contains a string only..
} else if 

Поскольку пол содержит простую строку, это не сработает:

var theValue = gender[bw];     // This doesn't work

Вместо этого вам следует сделать следующее:

if(document.getElementById("male").checked){
    gender = mensList;                         //now gender contains an array provided mensList is defined beforehand ..
} 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...