선택 항목에서 다른 드롭 다운 값으로 드롭 다운 목록 채우기가 표시되지 않음

마크 로건

세 번째 드롭 다운에 데이터를 채우는 방법에 문제가 있습니다.
세 개의 드롭 다운이 있습니다. 첫째로 첫 번째 드롭 다운을 클릭하면 두 번째 드롭 다운이 첫 번째 드롭 다운의 값을 기반으로 목록을 채우고 코드 아래에서 제대로 작동합니다.
문제는 두 번째 드롭 다운을 클릭 할 때 세 번째 드롭 다운에 목록을 채우고 싶지만 아무것도 표시되지 않는다는 것입니다.

var mealsByCategory = 
    { A: [ 'San Francisco', 'Manila', 'Kirishima' ] 
    , B: [ 'b', 'bb', 'bbb', 'bbbb' ] 
    , C: [ 'c', 'ccc', 'cccc', 'ccccc', 'cccccc' ] 
    } 
var Mprovinces = 
    { A: [ 'San Francisco', 'Manila', 'Kirishima' ] 
    , B: [ 'b', 'bb', 'bbb', 'bbbb' ] 
    , C: [ 'c', 'ccc', 'cccc', 'ccccc', 'cccccc' ] 
    } 
    
function changemeal(value) {
  $('#category').prop('disabled', false);
  if (value.length == 0) document.getElementById("category").innerHTML = "<option></option>";
  else {
    var catOptions = "";
    for (categoryId in mealsByCategory[value]) {
      catOptions += "<option>" + mealsByCategory[value][categoryId] + "</option>";
    }
    document.getElementById("category").innerHTML = catOptions;
  }
}

function changecat(value) {
  $('#provinces').prop('disabled', false);
  if (value.length == 0) document.getElementById("provinces").innerHTML = "<option></option>";
  else {
    var catOptions1 = "";
    for (categoryId in Mprovinces[value]) {
      catOptions1 += "<option>" + Mprovinces[value][categoryId] + "</option>";
    }
    document.getElementById("provinces").innerHTML = catOptions1;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select onChange="changemeal(this.value);">
  <option value="" disabled selected>Select Province</option>
  <option value="A">Usa</option>
  <option value="B">Japan</option>
  <option value="C">China</option>
</select>

<select name="category" id="category" onChange="changecat(this.value);" disabled>
  <option disabled selected>Select</option>
  <option value="A">Usa</option>
  <option value="B">Japan</option>
  <option value="C">China</option>
</select>

<select name="provinces" id="provinces" disabled>
  <option value="" disabled selected>Select</option>
</select>

기타

완전히 사용자 정의 가능한 방법 사용 :

let data = [{"id":1,"name":"USA","parentid":0},
{"id":2,"name":"Japan","parentid":0},
{"id":3,"name":"Europe","parentid":0},
{"id":4,"name":"California","parentid":1},
{"id":5,"name":"Oklahoma","parentid":1},
{"id":6,"name":"Arizona","parentid":1},
{"id":7,"name":"Kantô","parentid":2},
{"id":8,"name":"Kansai","parentid":2},
{"id":9,"name":"Chügoku","parentid":2},
{"id":10,"name":"France","parentid":3},
{"id":11,"name":"Deutschland","parentid":3},
{"id":12,"name":"Espana","parentid":3},
{"id":13,"name":"Sacramento","parentid":4},
{"id":14,"name":"Los Angeles","parentid":4},
{"id":15,"name":"San Diego","parentid":4},
{"id":16,"name":"Tulsa","parentid":5},
{"id":17,"name":"Oklahoma City","parentid":5},
{"id":18,"name":"Lawton","parentid":5},
{"id":19,"name":"Phoenix","parentid":6},
{"id":20,"name":"Flagstaff","parentid":6},
{"id":21,"name":"Tucson","parentid":6},
{"id":21,"name":"Tokyo","parentid":7},
{"id":22,"name":"Chiba","parentid":7},
{"id":23,"name":"Tochigi","parentid":7},
{"id":24,"name":"Kyoto","parentid":8},
{"id":25,"name":"Osaka","parentid":8},
{"id":26,"name":"Nara","parentid":8},
{"id":27,"name":"Tottori","parentid":9},
{"id":28,"name":"Hirochima","parentid":9},
{"id":29,"name":"Okayama","parentid":9},
{"id":30,"name":"Quimper","parentid":10},
{"id":31,"name":"Toulouse","parentid":10},
{"id":32,"name":"Nancy","parentid":10},
{"id":33,"name":"Dusseldorf","parentid":11},
{"id":34,"name":"Leipzig","parentid":11},
{"id":35,"name":"Munchen","parentid":11},
{"id":36,"name":"Barcelona","parentid":12},
{"id":37,"name":"Sevilla","parentid":12},
{"id":38,"name":"Guernica","parentid":12}]

function populateList(list, pid) {
  let l = document.getElementById(list);
  l.innerHTML = "";
  let topItem = document.createElement("option");
  topItem.value = 0;
  topItem.text = "--Select--";
  l.appendChild(topItem); 
  let items = data.filter(item => item.parentid == pid);
  items.forEach(function(item){
    let newItem = document.createElement("option");
    newItem.value = item.id;
    newItem.text = item.name;
    l.appendChild(newItem);
  })
}

function updateList(selList, thisList) {
  if (thisList.value != 0) {
    populateList(selList, Number(thisList.value));
  } else {
    let s = document.getElementById(selList);
    s.value = 0;
    triggerEvent(s, "onchange");
    let sCopy = s.cloneNode(false);
    let p = s.parentNode;
    p.replaceChild(sCopy, s);
  }
}
function triggerEvent(e, trigger)
{
    if ((e[trigger] || false) && typeof e[trigger] == 'function')
    {
        e[trigger](e);
    }
}
 

function loadList1() {
  populateList("list1", 0);
}

window.onload = loadList1;
select {width:150px;}
Region: <select id="list1" onchange="updateList('list2', this);"></select>
Sub-region:<select id="list2" onchange="updateList('list3', this);"></select>>
Location:<select id="list3"></select>

데이터 구조가 동일 {"id":n, "name":"xxx", "parentid":n}하다면 ( , 각 목록 옆의 텍스트 만 변경되는 경우), 그렇지 않으면 제공된 키 이름을 사용하도록 함수를 업데이트하면됩니다. 그리고 우리가하는 일은 동일한 배열을 기반으로 목록을 채우는 것이므로 모두 동일한 기본 함수를 사용할 수 있습니다 populateList. 초기로드와 목록의 선택은 다르게 시작되지만 결국 필터링 된 배열을 기반으로 목록을 채우는 동일한 작업을 수행합니다.

function getText() {
  let thisList = document.getElementById("list1");
  console.log(thisList.value);
  console.log(thisList[thisList.selectedIndex].text);

}
<button onclick="getText();">Click</button>

<select id="list1">
  <option value="1">Text 1</option>
  <option value="2">Text 2</option>
  <option value="3">Text 3</option>
</select>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

선택 목록에서 선택한 항목이보기 드롭 다운에 표시되지 않음

분류에서Dev

다른 드롭 다운 목록에서 값을 선택한 후 드롭 다운 목록 채우기

분류에서Dev

드롭 다운 목록에서 값을 선택하면 다음에 값이 표시되지 않습니다.

분류에서Dev

다른 드롭 다운 목록에서 선택한 값을 기반으로 특정 드롭 다운 목록을 표시합니다.

분류에서Dev

드롭 다운 목록에 표시되지 않는 선택한 항목

분류에서Dev

MVC 4에서 선택한 다른 드롭 다운 목록 값을 기반으로 드롭 다운 목록 채우기

분류에서Dev

Grails : 다른 드롭 다운이 선택되면 드롭 다운 목록 채우기

분류에서Dev

목록이 길어지면 선택 드롭 다운 목록이 제대로 표시되지 않음

분류에서Dev

jQuery 함수-다른 목록의 드롭 다운 선택으로 채워진 단순 드롭 다운 선택

분류에서Dev

드롭 다운 목록에서 선택한 값을 가져 와서 다른 드롭 다운 목록에 넣으시겠습니까?

분류에서Dev

편집 중 드롭 다운 목록에서 사용 가능한 항목 목록으로 현재 값이 표시되지 않음

분류에서Dev

다른 드롭 다운 목록에서 선택한 경우 드롭 다운에서 항목 제거

분류에서Dev

내 드롭 다운 목록이 드롭 다운되지 않음

분류에서Dev

다른 선택을 기반으로 선택 항목의 드롭 다운 값 표시

분류에서Dev

선택한 항목 드롭 다운에서 목록 상자에 값 추가

분류에서Dev

MVC 선택 목록이 드롭 다운에서 선택한 항목을 표시하지 않습니다.

분류에서Dev

드롭 다운 목록에 표시되지 않는 값

분류에서Dev

jquery로 드롭 다운 목록 선택

분류에서Dev

JSTL을 사용하여 다른 드롭 다운 선택을 기반으로 드롭 다운 목록에 값 채우기

분류에서Dev

드롭 다운 목록이 제대로 채워지지 않음

분류에서Dev

드롭 다운 목록 선택 선택기를 사용할 때 두 개의 드롭 다운 목록 표시

분류에서Dev

ASP.NET MVC 드롭 다운 목록이 값을 선택하지 않음

분류에서Dev

선택 후 닫히지 않는 선택 드롭 다운 목록

분류에서Dev

다른 드롭 다운 상자에서 선택한 옵션을 기반으로 드롭 다운 목록 채우기

분류에서Dev

GORM : 선택 드롭 다운에 목록 채우기

분류에서Dev

드롭 다운 목록의 값을 기반으로 값 표시

분류에서Dev

선택한 항목을 드롭 다운하면 mysql db에 제대로 표시되지 않습니다.

분류에서Dev

Angular2 드롭 다운에서 선택한 항목이 표시되지 않음

분류에서Dev

선택하지 않은 값을 테이블의 한 드롭 다운에서 다른 드롭 다운으로 채우는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    선택 목록에서 선택한 항목이보기 드롭 다운에 표시되지 않음

  2. 2

    다른 드롭 다운 목록에서 값을 선택한 후 드롭 다운 목록 채우기

  3. 3

    드롭 다운 목록에서 값을 선택하면 다음에 값이 표시되지 않습니다.

  4. 4

    다른 드롭 다운 목록에서 선택한 값을 기반으로 특정 드롭 다운 목록을 표시합니다.

  5. 5

    드롭 다운 목록에 표시되지 않는 선택한 항목

  6. 6

    MVC 4에서 선택한 다른 드롭 다운 목록 값을 기반으로 드롭 다운 목록 채우기

  7. 7

    Grails : 다른 드롭 다운이 선택되면 드롭 다운 목록 채우기

  8. 8

    목록이 길어지면 선택 드롭 다운 목록이 제대로 표시되지 않음

  9. 9

    jQuery 함수-다른 목록의 드롭 다운 선택으로 채워진 단순 드롭 다운 선택

  10. 10

    드롭 다운 목록에서 선택한 값을 가져 와서 다른 드롭 다운 목록에 넣으시겠습니까?

  11. 11

    편집 중 드롭 다운 목록에서 사용 가능한 항목 목록으로 현재 값이 표시되지 않음

  12. 12

    다른 드롭 다운 목록에서 선택한 경우 드롭 다운에서 항목 제거

  13. 13

    내 드롭 다운 목록이 드롭 다운되지 않음

  14. 14

    다른 선택을 기반으로 선택 항목의 드롭 다운 값 표시

  15. 15

    선택한 항목 드롭 다운에서 목록 상자에 값 추가

  16. 16

    MVC 선택 목록이 드롭 다운에서 선택한 항목을 표시하지 않습니다.

  17. 17

    드롭 다운 목록에 표시되지 않는 값

  18. 18

    jquery로 드롭 다운 목록 선택

  19. 19

    JSTL을 사용하여 다른 드롭 다운 선택을 기반으로 드롭 다운 목록에 값 채우기

  20. 20

    드롭 다운 목록이 제대로 채워지지 않음

  21. 21

    드롭 다운 목록 선택 선택기를 사용할 때 두 개의 드롭 다운 목록 표시

  22. 22

    ASP.NET MVC 드롭 다운 목록이 값을 선택하지 않음

  23. 23

    선택 후 닫히지 않는 선택 드롭 다운 목록

  24. 24

    다른 드롭 다운 상자에서 선택한 옵션을 기반으로 드롭 다운 목록 채우기

  25. 25

    GORM : 선택 드롭 다운에 목록 채우기

  26. 26

    드롭 다운 목록의 값을 기반으로 값 표시

  27. 27

    선택한 항목을 드롭 다운하면 mysql db에 제대로 표시되지 않습니다.

  28. 28

    Angular2 드롭 다운에서 선택한 항목이 표시되지 않음

  29. 29

    선택하지 않은 값을 테이블의 한 드롭 다운에서 다른 드롭 다운으로 채우는 방법은 무엇입니까?

뜨겁다태그

보관