Параметры функции JS объявляются, но никогда не считываются

#javascript #function #object #function-parameter

Вопрос:

У меня есть ввод в формате html, и я хочу поместить текст ввода в объект на JS и отобразить его на

в результате тег на html. Поскольку я не хотел упрощать код, я попытался создать функцию (чтобы я мог вызывать ее для каждого атрибута объекта. <input type="text" placeholder="Typ" id="type-mhouse" /> Является входным сигналом.

 const land = {
  Type: "",
  Adress: "",
  Value: "",
  updateValue: function (x, y, z) {
    this.x = document.getElementById(y).value;
    document.getElementById(z).textContent = this.x;
    console.log(this[0]);
  },
};
 

Это JS.

 <p class="ergebnis" id="ergtype-house"></p>
 

Это место, где отображается результат.

Проблема в следующем: когда я набираю, например, «Плоский» на входе, он правильно отображается на выходе html, но земля.Тип остается «».

Я перепробовал все, и я все еще очень новичок в JS, поэтому я не могу решить эту проблему. (Также я знаю, что мне не следует называть вещи «Типом» или «Значением».. Я изменю его.)

Спасибо за любой комментарий!

ВАЖНОЕ изменение: Объект земли используется в связанном файле js. Функция вызывается внутри HTML при нажатии кнопки:

 <script>
        $(document).ready(function () {
          
          //Button on Modal
          $("#submit").click(function () {
           
            land.updateValue("Type", "type-mhouse", "ergtype-house");

          });
        });
      </script>
 

Комментарии:

1. Где вы используете land объект?

2. В отдельном script.js файл, связанный с html. Однако кнопка, подтверждающая изменение, хранится в скрипте JSON в html

3. Пожалуйста, опубликуйте весь код целиком.

4. @youngmago, где вы меняете land.Type значение? Пожалуйста, опубликуйте весь свой код, чтобы мы могли вам помочь.

5. Извините, я отредактировал его сейчас и опубликовал код. Спасибо за помощь !

Ответ №1:

Я не уверен, что понимаю, что вы пытаетесь сделать, но вот решение для решения ваших проблем.

 const land = {
  type: "",
  address: "",
  value: "",
  updateValue: function(landAttributeName, textElementId, displayElementId) {
    this[landAttributeName] = document.getElementById(textElementId).value;
    document.getElementById(displayElementId).innerText = this[landAttributeName] || '';
  },
};
 

Кстати, вы правы, вам следует использовать более понятные имена 🙂

В информатике есть только две трудные вещи: аннулирование кэша и присвоение имен вещам. — Фил Карлтон

Комментарии:

1. Большое спасибо за подробный ответ и цитату! Ты спасла меня от еще нескольких дней головной боли. Это работает!! Я хотел изменить атрибуты объекта с помощью ввода и отобразить их на странице нажатием кнопки.

2. Еще раз спасибо!! Если у вас есть время, не могли бы вы вкратце объяснить мне, что я сделал не так?