2011-12-19 4 views
0

이 질문에 대한 변형이 있었지만 찾고자하는 것이 상당히 만족 스럽다는 것을 발견하지 못했습니다. 내가 가진 것은 다음과 같습니다. 사용자의 로그인 자격 증명에 따라 데이터가 동적으로 입력되는 테이블이 있습니다. 테이블의 데이터는 ProductID 필드 앞에 (a) 또는 (b) 또는 (c) 등을 표시하여 구성되어 함께 구성됩니다. 클라이언트는 (a)가있는 행의 배경색을 원한다고하자. 그들은 (b)가있는 행을 파란색으로 원합니다. (c) 녹색으로. 너는 그 패턴을 본다. JavaScript 또는 jQuery에서이 작업을 수행하는 방법을 알아야하지만 가능한 경우 사용할 코드의 양을 최소화하고 싶습니다. 나도 좋지는 않지만 샘플 코드로 작업하고 올바른 결과를 얻으려고 노력할 수 있습니다. 아무도 도와 줄 수 있습니까? 어쩌면 올바른 방향으로 나를 가리킬 수 있습니까?열 데이터의 일부를 기반으로 테이블 행의 배경색을 변경하십시오.

+1

그리고 샘플 (샘플/데모/대표 마크 업)은 무엇을 생산합니까? –

+0

우선 데이터가 어떻게 동적으로로드됩니까? –

답변

0

내가 실제로 작동있어거야. 그것은 jQuery의 'contains'를 사용합니다. 그러면 회사 로그인이 무엇인지 살펴 본 다음 ID가 'table1'인 테이블의 행을보고 (A) 또는 (B) 또는 (C)와 일치하는지 확인합니다. 그렇다면 배경색을 지정합니다. 같은 배경색을 가지고있을 때 행이 함께 실행 되었기 때문에 아래쪽 테두리 특성을 추가했습니다. 희망이 다른 사람을 도와줍니다.

var tempCustomerName; 
var CustomerName; 
tempCustomerName = document.getElementById("CustomerName").innerHTML; 
CustomerName = tempCustomerName; 
if (CustomerName.indexOf('Test Company') != -1) { 
$("#table1 tr td").css("border-bottom", "1px solid #000 !important"); 
$("#table1 tr:contains('(A)')").css("background", "#66CC99"); 
$("#table1 tr:contains('(B)')").css("background", "#FFCC33"); 
$("#table1 tr:contains('(C)')").css("background", "#FFFF33"); 
$("#table1 tr:contains('(D)')").css("background", "#9999FF"); 
$("#table1 tr:contains('(E)')").css("background", "#3399FF"); 
$("#table1 tr:contains('(F)')").css("background", "#FF3333"); 
$("#table1 tr:contains('(G)')").css("background", "#FF9900"); 
$("#table1 tr:contains('(H)')").css("background", "#66CC99"); 
$("#table1 tr:contains('(I)')").css("background", "#FFCC33"); 
$("#table1 tr:contains('(J)')").css("background", "#FFFF33"); 
$("#table1 tr:contains('(K)')").css("background", "#9999FF"); 
$("#table1 tr:contains('(L)')").css("background", "#3399FF"); 
$("#table1 tr:contains('(M)')").css("background", "#FF3333"); 
$("#table1 tr:contains('(N)')").css("background", "#FF9900"); 
$("#table1 tr:contains('(O)')").css("background", "#66CC99"); 
$("#table1 tr:contains('(P)')").css("background", "#FFCC33"); 
$("#table1 tr:contains('(Q)')").css("background", "#FFFF33"); 
$("#table1 tr:contains('(R)')").css("background", "#9999FF"); 
$("#table1 tr:contains('(S)')").css("background", "#3399FF"); 
$("#table1 tr:contains('(T)')").css("background", "#FF3333"); 
$("#table1 tr:contains('(U)')").css("background", "#FF9900"); 
$("#table1 tr:contains('(V)')").css("background", "#66CC99"); 
$("#table1 tr:contains('(W)')").css("background", "#FFCC33"); 
$("#table1 tr:contains('(X)')").css("background", "#FFFF33"); 
$("#table1 tr:contains('(Y)')").css("background", "#9999FF"); 
$("#table1 tr:contains('(Z)')").css("background", "#3399FF"); 
} 
2

다음은 jQuery를 사용한 샘플 솔루션입니다. 표와

$(document).ready(function() { 
    var table = $('#foo'), 
     rows = table.find('tr'), cells, background, code;   
    for (var i = 0; i < rows.length; i+=1) { 
     cells = $(rows[i]).children('td'); 
     code = $(cells[0]).text().substr(0, 3);   
     switch (code) { 
      case '(A)': 
       background = '#e29e6e'; 
       break; 
      case '(B)': 
       background = '#f9cf80'; 
       break; 
      case '(C)': 
       background = '#ffe8c0'; 
       break; 
      default: 
       background = '#95704e'; 
     } 
     $(rows[i]).css('background-color', background); 
    } 
}); 

: 먼저 당신이 rows 변수에 모든 행을 받고있어이 코드에서

<table id="foo"> 
    <tr> 
     <td>(A) 10x12 Blue Bag</td> 
     <td>Val</td> 
    </tr> 
    <tr> 
     <td>(A) 15x12 Red Bag</td> 
     <td>Val</td> 
    </tr> 
    <tr> 
     <td>(B) 10x12 T-shirt</td> 
     <td>Val</td> 
    </tr> 
    <tr> 
     <td>(A) 10x12 Yellow Bag</td> 
     <td>Val</td> 
    </tr> 
    <tr> 
     <td>(C) 10x12 Shoes</td> 
     <td>Val</td> 
    </tr> 
</table> 

. 그런 다음 현재 행 ($(rows[i]))의 모든 셀을 셀 배열로 가져옵니다. 그런 다음 행 배경색에 따라 달라지는 열이 첫 번째 열이라고 가정 할 수 있습니다. 그런 다음 스위치에 값 ($(cells[0]).text())이 있는지 확인한 후 현재 행을 페인팅합니다. 도움이 되길 바랍니다. 여기

// 결과 : 여기 http://jsfiddle.net/cEY7K/6/

+1

빠른 응답을 보내 주셔서 감사합니다. 나는 우리가 바른 길에 있다고 생각합니다. 그러나 편지를 기반으로 행을 타겟팅하는 데 문제가 있습니다. 데이터가있는 방법을 좀 더 잘 설명 할 수 있습니다. 첫 번째 열에는 (A) 10x12 지 플락 백과 같은 번호가있는 고객 품목 코드가 있습니다. 그 접두사를 가진 다른 사람들이 있기 때문에 코드의 (A) 부분을 누를 수 있기를 원합니다. 그리고 나는 그들 모두가 같은 색이되기를 바랍니다. 이미 알파벳을 기준으로 그룹화되어 있습니다. 그래서 기본적으로 고객 상품 코드의 일부를 대상으로 할 수 있습니까? 어떻게해야합니까? – djlender

+0

안녕하세요 Tomalak. 나는 네가 한 일을 보려고 고심하고있다. 내가 본 것은 당신이 민코의 서명을 삭제했다는 것입니다. 나는 코드를 나란히 보았고 그 차이점을 보지 못했다. 셀에있는 텍스트 문자열의 (A) 부분을 키 오프 할 수있는 솔루션이 있는지 말해 줄 수 있습니까? 나는이 일에 대해 시계에 반했기 때문에 빨리 알아낼 필요가있다. 나는 나 자신을 시도하고 있지만별로 멀지는 않습니다. 감사합니다. – djlender

+1

그것이 당신이 찾고있는 것이기를 바랍니다 :-) –

관련 문제