2014-04-03 2 views
3

javascript를 사용하여 특정 요소에 클래스를 할당하는 특정 사이트에 대한 스타일 시트를 만듭니다. 어떤 이유로 든 'td'엘리먼트는 이상한 클래스 할당과 인라인 스타일을 사용하기 때문에 루프를 반복하고 정리하고 외부 스타일 시트에서 참조 할 적절한 클래스 이름을 할당합니다.Javascript : 잘못된 스타일 정의가있는 요소의 콘텐츠를 가져옵니다.

사이트 자체에 액세스 할 수 없으며 (아무 것도 변경할 수있는 관리 권한이 없음) Firefox 용 Stylish 및 Greasemonkey (원래 스타일 시트를 처리하는 Adblock 포함)를 사용합니다. 문제는 문제가 해결되지 않는 한 특별한 경우가있다

var cellStyleBg = cCell.style.backgroundColor; 
if (cellStyleBg) { 
switch(cellStyleBg) { 
    case 'white': 
     cCell.removeAttribute('style'); 
     if (cCell.parentNode.nodeName == 'TR') { 
      cCell.parentNode.className = 'deadlineSet'; 
     } 
     break; 
... 

:

는 여기에 대한 책임을 JS 코드의 작은 부분이다

<td class="td2h" style="background: dd97f0;"> 

당신이 볼 수 있듯이, 색상 코드 앞에 octotorp가 없습니다. 이 경우 변수 cellStyleBg가 'null'인 것으로 가정합니다.

('cCell.style.backgroundColor'대신) 'cCell.style'및 'cCell.style.background'를 사용하려고했지만 텍스트를 구문 분석 할 일반 텍스트를 반환하지 않습니다.

이 특별한 경우를 처리하려면 어떻게해야합니까?

+0

'cellStyleBg' 변수가있는'#'? 'if '('# '+ cellStyleBg) {' –

+0

그게 정확히 문제입니다. cellStyleBg은 어떤 이유로 든 null이므로 내용에 아무 것도 할 수 없습니다. 그 이유는 컬러 코드가 유효하지 않아서 JS에 의해 전혀 가치가없는 것으로 의심됩니다. – XNRL

+0

아, 알겠습니다, 나는 거꾸로 ... 당신은 좋은 대답을 얻은 것처럼 보입니다! –

답변

1

내가가는 유일한 방법은 스타일 속성의 원시 값을 얻는 것입니다. 당신은 필요한 경우 고장이 조각

를 사용하여 키 값 쌍으로 스타일 수

//will output background: dd97f0 
cCell.getAttribute('style'); 

하여이 작업을 수행 할

//give "background: dd97f0", will output "background=dd97f0" 
var stylePattern = /(.*?):([^;]*);?/g 
while (match = stylePattern.exec(style)) { 
    console.log(match[1].trim() + "=" + match[2].trim()); 
} 
나는 그래서 난 그냥 언급거야 여기서 뭔가를 누락 될 수 있습니다,하지만 당신이 연결할 수
+1

나를 이길 ... 그냥 대답을 게시하려고했다! – Pete

+0

Scratchpad에서이 작업을 시도했지만 제대로 작동합니다. 무리 감사! – XNRL

관련 문제