Q&A

js & jq 관련된 질문입니다.

2019.10.25 09:58
256
0
CMS/프레임워크 사용안함
개발 언어 사용안함
문제 페이지 주소 비공개 (작성 후 5일 경과)

 

 

html 은 다음과 같이

 

이름 시작 시간
철수 14시
영희 14시
가연 15시
미희 16시
   

 

이렇게 마련되어있고,

 

var 시작시간14 = '철수,영희';

var 시작시간15 = '가연';

var 시작시간16 = '미희';

 

라는 var 값을 서치하여 이름과 대조하여 해당하는 사람의 시작시간을 변경할 수 있도록 js를 하려고합니다.. 도무지 어떻게 해야할지 머릿속에서 나오질않네요 ㅠㅠ 조언받아볼 수 있을까요?

댓글 8

  • 2019.10.25 10:01 #1283133
    각 td마다 아이디를 부여하여 if문을 사용할 순 있지만, 사용자가 늘어나고 줄어드는 구조이기때문에.. 다른 방법에 대한 조언 부탁드립니다.
  • 2019.10.25 10:46 #1283140

    그냥 jQuery로 $('table tr').each(function() { ... }); 루프 돌리세요.

    셀의 text() 값이 비교대상과 일치하면

    해당 셀이나 다음 셀 next(), 이전 셀 prev() 등의 text()를 바꿔주고요.

  • 2019.10.25 10:57 #1283148
    $('table tr').each(function() {

    내용 에 어떠한 메소드가 들어가야할지를 잘 모르겠습니다 ㅠㅠ..셀의 text() 값이 비교대상과 일치하면, 이라고 말씀해주셨는데 어느정도의 예시를 보여줄 수 있으신가요

    });
  • 2019.10.25 11:06 #1283155

    지금 무엇을 무엇과 비교하여 어떻게 하겠다는 건지 모르겠네요. 철수와 영희를 찾아서 시간을 바꿔주겠다는 건지, 아니면 시간이 14시인 사람들을 찾아서 바꿔주겠다는 건지...

    아래의 예제는 table tr로 each를 돌리는 함수 내에서, 첫번째 셀의 텍스트가 '철수'인 경우 두번째 셀의 텍스트를 '14시'로 변경하는 코드입니다. 응용은 님에게 맡길게요.^^

    var first_cell = $(this).find('td:nth-child(1)');
    var second_cell = $(this).find('td:nth-child(2)');
    if (first_cell.text() == '철수') {
        second_cell.text('14시');
    }

  • 2019.10.25 11:16 #1283160

    시간을 바꿔주는게 맞습니다!

    그런데 시간을 바꿔는 셀에는 option으로 선택하는내용으로 표기되어있습니다 ㅠㅠ

     

    그리고 if (first_cell.text() == '철수') { 이게 철수라는 이름이 없어지고 다른사람이 들어올 수도 있어서

     

    타겟을 잡는 방식을

     

    왼쪽 셀에 위치한 이름이 var 14시 값에 있을 경우 오른쪽 셀에 14시로 변경을 해주려고하는겁니다!

  • 2019.10.25 11:57 #1283166
    $('table tr').each(function() {

    var test = "홍길동,김철수";
    var namee = $(this).find('td:nth-child(1)').text();
    var second_cell = $(this).find('td:nth-child(2)');

    if(namee == "홍길동") {
    alert('포함');
    }

    });


    위 내용대로라고 한다면 정상 작동하는걸 확인하였습니다만. 위 var 값중 test값에 대조를 해보면

    if(test.indexOf(namee) != -1) {
    alert('포함');
    }

    위 내용으로 구현 시 정상으로 작동되지 않고 alert값이 계속 노출됩니다 ㅠㅠ 혹시 위 내용 조언을 구해볼 수 있을까요?
  • 2019.10.25 14:05 #1283195

    셀 내용이 "홍길동"이고 test가 "홍길동,김철수"라면 if(test.indexOf(namee) != -1) 조건이 참이 되므로 alert이 노출되는 것이 정상입니다. 만약 목록에 없는 다른 이름이 들어 있는 셀에서도 계속 alert이 뜬다면 namee 변수에 도대체 뭐가 들어갔는지 찍어볼 필요가 있겠습니다.

  • 2019.10.25 14:31 #1283206
    if (user == '' || t14.indexOf(user) == -1) {
    } else {
    $(this).find('td:nth-child(2) #opys').val('14시');
    }


    해결 완료했습니다 ㅠㅠ..

    user == ''는 tr값들중 공백이 있는 곳이 있어서 제외시키기위해 진행했습니다 ㅠㅠ