getElementById Где элемент динамически создается и добавляется в DOM - PullRequest
0 голосов
/ 24 сентября 2018

Я выполняю 2 сценария.Первый скрипт (jquery) создает вход и добавляет его в форму.Второй сценарий получает значение динамически созданного ввода.Но сейчас я получаю нулевое значение.Чтобы уйти от всех вопросов, да, первый скрипт был протестирован несколько раз, и вход действительно создан, а значение добавлено правильно.Как получить значение из динамически созданного элемента во втором сценарии?

первый сценарий

<script src="js/firstscript.js"></script>
  $(document).ready(function(e){
    $('.button').click(function(e){

      e.preventDefault();
      var userCurrency = 'usd';

      $('<input>').attr({
        type: 'hidden',
        id: 'userCurrency',
        name: 'userCurrency',
        value: userCurrency
      }).appendTo('#payment-form');

  })
})

второй сценарий

<script>
  //get currency
  var amountCurrency = document.getElementById('userCurrency');
  console.log(amountCurrency);
</script>

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Я исправил свою проблему, и я просто смешал jquery и javascript.Да, я знаю плохую практику, но пока она работает безупречно, и это то, что важно для команды.

Короче говоря, это конечный результат.Ничего волшебного, но он сделал это для меня:

<script src="js/firstscript.js"></script>
  $(document).ready(function(e){
    $('.button').click(function(e){

      e.preventDefault();
      var userCurrency = 'usd';

      $('<input>').attr({
        type: 'hidden',
        id: 'userCurrency',
        name: 'userCurrency',
        value: userCurrency
      }).appendTo('#payment-form');

  })
})

//vanilla javascript code below
var amountCurrency = userCurrency;
0 голосов
/ 24 сентября 2018

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

document.getElementById('payment-form').addEventListener("DOMNodeInserted", function (ev) {
  if (ev.target.id === 'userCurrency') {
    console.log(ev.target.id);
  }
}, false);

Это вызовет, тогда ваш элемент добавится в форму.

В противном случае, есливы можете присоединиться к сценариям, вы должны поместить второй сценарий после добавления вашего элемента или вызвать глобальную функцию

...