Pino99
40
2020-12-27 23:46:33
2
155

Java script로 드롭다운 값을 가져와서 값에 따라 배열 값을 바꾸고 싶습니다!


<select id="time" name="time" onchange="time(this);">
<option value="hide">-- 시간 선택 --</option>
<option value="any time">아무 시간</option>
<option value="BF">아침 </option>
<option value="lun">점심</option>
<option value="din">저녁</option>
<option value="kni">야식</option>
</select>

이런 드롭다운 값을

var time = function (select_obj) {
var selectedTime_index = select_obj.selectedIndex;
var selectedTime_value = select_obj.options[selectedTime_index].value;
alert(selectedTime_value)

일케 가져와서 확인하는 것 까지는 해봤는데요.

var timelist = [];
var timeselect = document.getElementById('time');
for (var i = 0; i < Menulist.length; i++) {
if (timeselect.value == 'any time') {
timelist.push(Menulist[i]);
}}
for (var i = 0; i < BFlist.length; i++) {
if (timeselect.value == 'BF') {
timelist.push(BFlist[i]);
}
}
for (var i = 0; i < lunlist.length; i++) {
if (timeselect.value == 'lun') {
timelist.push(lunlist[i]);
}
}
for (var i = 0; i < dinlist.length; i++) { if (timeselect.value == 'din') {
timelist.push(dinlist[i]);
} }
for (var i = 0; i < knilist.length; i++) { if (timeselect.value == 'kni') {
timelist.push(knilist[i]);
}};

값에 따라서 기존에 만들어 놨던 리스트들을 timelist라는 이름에 집어 넣고 싶은데
유튜브랑 구글링으로만 시작했다보니 주말 내내 사지방에서 박혀 있어도 잘 안되네요 ㅠㅠ

값에 따라서 timelist 배열이 정해지면 같은 방법으로 만든 몇 가지 배열과 교집합인거 뽑아내서 그 중에 랜덤 값을 추천해주는 서비스를 생각하고 있습니다.

아무래도 버튼을 클릭했을 때 작동하게 해야하나 싶어서 function안에 집어 넣으면 배열 값을 밖으로 가져오질 못해서...
조언 구해봅니다 ㅠㅠ
0
  • 답변 2

  • 킁킁탐정
    826
    2020-12-28 00:05:40

    정확하게 어떤 결과를 도출하고 싶은지에 대한 설명 부족한거 같습니다. 하지만 좀 더 괜찮은 코드가 되는 방법을 몇가지 알려드릴순 있을꺼 같습니다. 다음은 모두 같은 결과입니다.

    var timelist = [];
    var timeselect = document.getElementById("time");

    // 작성하신 코드
    for (var i = 0; i < Menulist.length; i++) {
    if (timeselect.value == "any time") {
    timelist.push(Menulist[i]);
    }
    }

    // 수정 1, 매번 if를 검사할 필요가 없습니다. 밖으로 빼는게 효율적입니다.
    if (timeselect.value == "any time") {
    for (var i = 0; i < Menulist.length; i++) {
    timelist.push(Menulist[i]);
    }
    }

    // 수정 2, MenuList의 모든값을 추가하는건 단순하게 대입하면 동일한결과를 얻습니다.
    if (timeselect.value == "any time") {
    timelist = MenuList;
    }




  • 간텔
    75
    2020-12-28 01:47:05
    const arr = [
     { option : "hide", name : "시간 선택" },
     { option : " ", name : " " },
     ...
    ];

    이런 배열을 만들어서 .map함수로 나타내는건 어떤가요

  • 로그인을 하시면 답변을 등록할 수 있습니다.