기타등등/뭔가만들어보기

특정 단어가 들어간 input 선택

킹king 2020. 11. 17. 18:15
반응형

뉴스 데이터를 체크해서 맞지 않는 기사를 삭제하는 일을 하고 있음.

 

기사 타이틀에 우연히 기업 이름이 들어갔다는 이유로 상관없는 뉴스들이 흘러들어온 경우가 그 예임.

(예: '남성'이라는 기업 뉴스에 '대한민국 남성 30대, ㅇㅇ브랜드 선호' 라는 뉴스가 들어와있음.)

 

하루는 안그래도 삭제할게 많은 기업인데 이틀내내 300~500개 넘는 기사를 지우다보니 이골이 났음. 

 

그래서 '기업 이름'을 기사 타이틀에서 강조해서 주변 단어를 더 빨리 읽고 바로바로 삭제하기위해 코드를 짜봄.

 

 

1차 만든거

 

var tr = document.getElementsByClassName('table-bordered')[1].getElementsByTagName('tr');
var input = document.getElementsByClassName('table-bordered')[1].getElementsByTagName('input');
var sum = 0;

for (k=1; k<tr.length; k++) {
    if (tr[k].getElementsByTagName('td')[3].textContent == "대상") {
        tr[k].getElementsByTagName('input')[0].checked = true;
        tr[k].getElementsByTagName('td')[2].style.backgroundColor="yellow";
    }
}

for (i=0; i<input.length; i++) {
    if (input[i].checked == true) {
        sum += 1;
    }
}

console.log(sum);

 

[원했던 것]

1) '대상'을 검색하면 '대상홀딩스'와 같이 다른 기업들도 검색되서, 문제 기사가 많은 '대상' 기업 기사만 체크.

2) 내용을 빨리 파악할 수 있도록 기사 타이틀에서 '대상' 라는 글씨만 스타일 변경.

3) 체크박스 미리 체크.

4) 몇개 체크했는지 확인.

 

[현실]

2) 특정 텍스트를 어떻게 선택해야하는지 모르겠음. 몇날며칠 고민해도 모르겠어서 그냥 기사 타이틀을 통으로 강조해놓음. 

 

지금보면 참.. sum은 왜 따로 반복문 돌렸는지도 모르겠고..^^ 하지만 아직 반복문이나 프로퍼티에 익숙하지 않은 상태라 그때는 만들어놓고 매우 행복해했음.

 

 

2차 만든거

 

var a = document.querySelectorAll('a');
var stn = 0;

for(i=0; i<a.length; i++) {
    if(a[i].textContent.indexOf('대상 청정원') != -1 ||
       a[i].textContent.indexOf('대상,') != -1 || 
       a[i].textContent.indexOf('대상 주식') != -1) {
        continue;
    } else if(a[i].textContent.indexOf('대상') != -1) {
        var start = a[i].textContent.indexOf('대상');
        var findText = a[i].textContent.slice(start , (start + 2));

        findText = findText.fontcolor('#f77f00').bold();
        a[i].innerHTML = a[i].innerHTML.replace('대상', findText);

        a[i].parentNode.parentNode.querySelector('input').checked = true;
        stn++;
    }
}

stn;

 

[수정한 것]

1. querySelector로 tr이 아닌 a태그로 찾기.

 

2. 특정 텍스트만 강조

어제 스터디카페에서 공부할 때 우연히 setSelectionRage()라는 메소드를 보고 갑자기 생각나서 수정하려했음 ---> 근데 저건 input, textarea에서만 쓰임 ---> 좌절 ---> 뭔가 indexOf랑 slice로 선택할 수 있다는 생각이 팍 듬 ---> 특정 텍스트 선택은 이제 가능함. 근데 그부분만 어떻게 바꾸지 변수에 텍스트를 받아서 거기서 또 인덱스로 세서 변경해서 다시 집어넣어야하나이러다가 replace를 써보니까 되었다!

 

3. 거를 조건 추가

저 문구들이 들어간 기사 타이틀은 정상적인 기사라서 제외용으로 빼놓음.

 

 

[알게된 것]

- continue : 사용처가 이런거구나라고 알게됨

- fontcolor() : DOM 함수?라는데

- slice : 연습

- indexOf : 많이 친해짐