2013-07-23 2 views
-4

다른 셀에 숫자가있는 표가 있습니다.
셀에 value < 0이 있는지 확인하고 싶습니다. 행의 배경색을 빨간색으로 바꿀 수 있습니다! 버튼 클릭으로 함수를 호출하고 전체 문서의 테이블을 검사 할 수 있습니다. 이것은 내가 사용하고있는 것입니다 :셀의 음수 값의 배경색을 변경하는 방법은 무엇입니까?

function checkNegative(){ 
    function(e) { 
     var $target = $(e.target); 
     var checkNeg = function(c) { 
      for(var i=0,$ci; i<c.length; i++) { 
       $ci = $(c[i]); 
       if(parseInt($ci.text()) < 0) $ci.css("color", "red"); 
       else $ci.css("color", "black"); 
      } 
     }; 
     checkNeg($target.parents("table").find("[td]")); 
    } 
} 

나는 인터넷을 통해이를 찾았지만, 내 경우 작동하지! 도와주세요! 내 표는 다음과 같습니다

<table border="1" bordercolor="#bababb"> 
    <thead> 
     <tr> 
      <th>NUMBER1</th> 
      <th>NUMBER2</th> 
      <th>NUMBER3</th> 
      <th>NUMBER4</th> 
     </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td>1202</td> 
     <td>2587</td> 
     <td>-2541</td> 
     <td>3652</td> 
    </tr> 
    <tr> 
     <td>1202</td> 
     <td>2587</td> 
     <td>2541</td> 
     <td>-3652</td> 
    </tr> 
    <tr> 
     <td>1202</td> 
     <td>-2587</td> 
     <td>2541</td> 
     <td>3652</td> 
    </tr> 
    <tr> 
     <td>-1202</td> 
     <td>2587</td> 
     <td>2541</td> 
     <td>3652</td> 
    </tr> 
    <tr> 
     <td>-1202</td> 
     <td>2587</td> 
     <td>-2541</td> 
     <td>3652</td> 
    </tr> 
    <tr> 
     <td>1202</td> 
     <td>-2587</td> 
     <td>-2541</td> 
     <td>3652</td> 
    </tr> 
    </tbody> 
</table> 
+0

안녕 MHS를, 난 당신이 질문에 모호한 조금있다 생각합니다. 당신이 질문하는 제목은 뭔가를 말하고 그 설명은 다른 것을 말합니다. 설명에서 다른 것을 말하는 동안 음의 값을 갖는 셀에 대해서는 제목에서 자바 스크립트와 빨간색 배경색을 언급하기 때문에 문제에 대해 구체적으로 설명해 주실 수 있습니까? –

답변

1

나는이 문제에 대한 해결책을 가지고 있다고 생각한다. 6 행 4 열에 양수 및 음수 값이있는 테이블을 가정합니다.

나는 또한 양수 또는 음수 값에 따라 배경을 채색하는 javascript 메서드를 사용합니다. 바이올린 here

스크립트가 찾아주세요 :

var formatBackground=function(){ 
    var table, tbody, rowCount, cellCount, value; 
    table=document.getElementsByTagName('table')[0]; 
    if(table.childNodes[1]) tbody=table.childNodes[1]; 
    if(tbody) rowCount=tbody.childNodes.length; 

    for(i=0;i<rowCount;i++){ 
     cellCount=tbody.childNodes[i].childNodes.length; 

     for(j=1;j<cellCount;j++){ 
      value=tbody.childNodes[i].childNodes[j].outerText; 
      if(parseInt(value)<0) tbody.childNodes[i].childNodes[j].setAttribute('style','background-color: #f00'); 
      j+=1; 
     } 
     i+=1; 
    } 
}; 
+0

Rupam 다타 : 내 테이블 구조는 다음과 같습니다 도와주세요 BLA BLA 제목

! – MHS

+0

업데이트 된 바이올린을 찾으십시오. http://jsfiddle.net/ardeezstyle/GSWBW/2/ –

+0

Rupam Datta : 업데이트 된 질문을 확인하십시오. – MHS

2
<table id="your_table_id"> 
    <tr> 
     <td>1</td> 
     <td>2</td> 
     <td>-3</td> 
     <td>4</td> 
    </tr> 
    <tr> 
     <th>-2</th> 
     <th>-1</th> 
     <th>0</th> 
     <th>5</th> 
    </tr> 
    <tr> 
     <td>+5</td> 
     <td>-3</td> 
     <td>0</td> 
     <td>-2.3</td> 
    </tr> 
</table> 


<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script> 
    $(function() { 
     $("#your_table_id td").each(function(){ 
      var txt = $(this).text(); 
      if(!isNaN(txt) && parseInt(txt) < 0) 
       $(this).parent().css('background-color', 'red'); 
     }); 
    }); 
</script> 
+0

버튼 클릭시 어떻게 호출 할 수 있습니까? 그리고 내 전체 문서가 단 하나의 테이블이 아니라 검사되기를 바랍니다! 도와주세요!!! 미리 감사드립니다 :) – MHS

+0

'$ ("# table_td")에'$ ("# your_table_id td")'를 변경하는 것은 괜찮습니다. –

1

을 따라서, 코드에 최소한의 변경으로 작동하도록 :

var checkNeg = function(c) { 
    for(var i=0,$ci; i<c.length; i++) { 
     $ci = $(c[i]); 
     console.log(i, parseInt($ci.text())); 
     if(parseInt($ci.text()) < 0) $ci.css("color", "red"); 
     else $ci.css("color", "black"); 
    } 
}; 

$('table *').click(function(e) { 
    checkNeg($(e).closest("table").find("td")); 
}); 

구문 오류가 익명 함수에 기인 (function(e) { ... }) 포장 어떤 방식 으로든 활용되지 않고 (즉, 호출되지도 않고 변수에 저장되지도 않음).

내가 코멘트에 대한 얘기 "[td]" 선택은 예를 <div td="foo">를 들어, td라는 속성이있는 모든 노드를 선택한 것이다; td 요소가 아닙니다. 그렇게하려면 선택자 "td"이 필요합니다.

실제로 테이블의 클릭에 응답하려면 클릭 핸들러가 있어야합니다.

내부 코드 자체는 만지지 않았습니다. Allen Chak의 대답은 당신에게 똑같은 일을하는 더 좋은 방법을 보여 주지만 둘 중 하나는 효과가 있어야합니다.

1

당신은 단순히 '테이블 TD'에서 '#your_table_id TD'에서의 jQuery 셀렉터를 변경하고, 같은 것을하는 경우 clickHandler에서 함수를 호출 할 수 있습니다

var checkNegative = function(e) { 
    e.preventDefault(); 
    $('table td').each(function() { 
     //Allen Chak's code here 
    }); 
} 

$('#mybutton').click(checkNegative); 

내가 할 말은하지 않습니다 무례하지만, 당신이 이런 종류의 변화를 이해할 수 없다면, 나는 스스로에게 호의를 베풀고, 자바 스크립트와 jQuery에 대해 좀 더 연구하도록 권고한다. 그냥 구현하고 행복하게 작동 할 수 있지만 코드를 실제로 이해하는 것이 훨씬 낫다.)

관련 문제