Почему не вызывается функция selecGoods()

Рейтинг: 0Ответов: 1Опубликовано: 16.01.2023

Всем привет, только начал изучать JS, не могу понять почему не вызывается функция selectGoods() для проверки пытался вывести yes в консоль, но ничего

function init() {
    $.post(
        "core.php",
        {
            "action" : "init"
        },
        showGoods
        
    );
}


function showGoods(data) {
    data = JSON.parse(data);
    console.log(data);
    var out='<select>';
    out +='<option data-id="0">Новый товар</option>';
    for (var id in data) {
        out +=`<option data-id="${id}">${data[id].name}</option>`;
    }
    out +='</select>';
    $('.goods-out').html(out);
    $('goods-out select').on('change', selectGoods);
}

function selectGoods(){
    
    var id = $('.goods-out select option:selected').attr('data-id');
    console.log('yes');
    console.log(id);
    $.post(
        "core.php",
        {
            "action" : "selectOneGoods",
            "gid" : id
        },
        function(data){
            data = JSON.parse(data);
            $('#gname').val(data.name);
            $('#gcost').val(data.cost);
            $('#gorder').val(data.ord);
            $('#gimg').val(data.img);
            $('#gid').val(data.id);
        }
    );
}   

$(document).ready(function () {
    
    
    init()
    
});

введите сюда описание изображения

введите сюда описание изображения

Ответы

▲ 0Принят

почему не вызывается функция selectGoods()

Ты не внимателен... Смотри на селекторы

$('.goods-out').html(out);
$('goods-out select').on('change', selectGoods);

Куда пропала точка у второго селектора?

function init() {
  /*
    $.post(
        "core.php",
        {
            "action" : "init"
        },
        showGoods
        
    );
    */
  const arr = [
    {name: 'item 1'},
    {name: 'item 2'},
    {name: 'item 3'},
  ]
  showGoods(arr)
}


function showGoods(data) {
  //data = JSON.parse(data);
  //console.log(data);
  var out = '<select>';
  out += '<option data-id="0">Новый товар</option>';
  for (var id in data) {
    out += `<option data-id="${id}">${data[id].name}</option>`;
  }
  out += '</select>';
  $('.goods-out').html(out);
  $('.goods-out select').on('change', selectGoods);
}

function selectGoods() {

  var id = $('.goods-out select option:selected').attr('data-id');
  console.log('yes');
  console.log(id);
  /*
  $.post(
    "core.php", {
      "action": "selectOneGoods",
      "gid": id
    },
    function(data) {
      data = JSON.parse(data);
      $('#gname').val(data.name);
      $('#gcost').val(data.cost);
      $('#gorder').val(data.ord);
      $('#gimg').val(data.img);
      $('#gid').val(data.id);
    }
  );
  */
}

$(document).ready(function() {
  init()
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='goods-out'></div>