Используйте переданный val в js

Мне нужно передать значение из html и использовать его, чтобы найти переменную в моем Js, поэтому в соответствии со значением в theId в моем HTML, я мог бы использовать переменную в моем JS. Как я могу это сделать?

HTML

 <input id="Waist" type="checkbox" onchange="getToWork(this.id)" >Waist 

<script> тег на HTML

function  getToWork(theId){
  usedCheckBox(theId);
}

myJs.js

  function usedCheckBox(theId){

    var temp1 = theId.name; - will be undefined
    var temp2 = Waist.name; - will work
}

var Waist = {name:"bob",age:"17"}

4 ответа

Проблема с вашим кодом заключается в том, что вы не используете document.getElementById, как показано ниже:

JS:

document.getElementById("Waist").addEventListener("change",function(evt){
    getToWork(this.id);
})

function getToWork(theId){
  usedCheckBox(theId);
}

function usedCheckBox(theId){
    console.log(theId);
    console.log(Waist);
    var temp1 = document.getElementById("Waist").val; // will return Waist
    var temp2 = Waist.val(); // generate error, don't know what you want
}

var Waist = "change today!"

Скрипка: https://jsfiddle.net/xLvzah8w/1/

Я понял ваш вопрос сейчас, и для этого вы должны создать один родительский объект, как показано:

function usedCheckBox(theId){
    var temp1 = parent[theId].name; // will return bob
    console.log(temp1);
    var temp2 = parent.Waist.name; // will return bob
        console.log(temp2);
}

var parent = {
  Waist : {name:"bob",age:"17"}
}

Причина, по которой ваш код не работает, заключается в том, что вы пытаетесь получить доступ к свойству строки. 'theId' - это строка со значением 'Waist', где Waist является объектом, поэтому возникает ошибка.

Обновленная скрипка: https://jsfiddle.net/xLvzah8w/2/

1

Вам следует избегать использования атрибута onclick и лучше прослушивать событие "js side" (addEventListener/attachEvent). В контексте этих обработчиков событий это, как правило, представляет элемент, к которому был прикреплен прослушиватель событий:

document.getElementById("Waist").addEventListener("change",getToWork);

function getToWork(){
    usedCheckBox(this);
}
function usedCheckBox(elem){
    var value = elem.value ;
}
0

Правильный способ продолжить это:

На месте var temp1 = theId.val();

использование document.getElementById(theId).value

0

Когда вы делаете: theId.val(), имеет смысл, что это undefined, призвание getToWork(this.id) отправляет строку, а не элемент HTML. Поэтому зовет .val() на строку не определено.

Если вы пытаетесь получить текстовое значение, сохраненное в элементе флажка, который был нажат, вам нужно изменить на...

function getToWork(arg) {
  console.log(document.getElementById(arg).value);
}
<input id="Waist" type="checkbox" value="INPUT_BOX" onchange="getToWork(this.id)"> Waist

0
Другие вопросы по тегам