2016-01-13 87 views
-3

也許我不清楚。假設我有三行,並使用第二行的複選框,那麼我只希望該行改變顏色,其他行將保持不變。對不起,我可憐的解釋。用javascript改變顏色

row.insertCell(3).innerHTML = '<input type="checkbox" value="check" onclick="ChangeBackgroundColor(this)">' 

function ChangeBackgroundColor(status){ 
    if (status.checked == true) { 
     var x = document.getElementById("myTableData").getElementsByTagName("tr") 
     x[1].style.backgroundColor = "green"; 
+3

你通過所有包含在'x'元素需要循環,並設置它們的顏色。 –

+0

也許我不清楚。假設我有三行,並使用第二行的複選框,那麼我只希望該行改變顏色,其他行將保持不變。對不起,我可憐的解釋。 – korvar

回答

1

嘗試遍歷標籤:

function ChangeBackgroundColor(status) { 
    if (status.checked == true) { 
     var x=document.getElementById("myTableData").getElementsByTagName("tr"); 
     for (var i=0; i<x.length; ++i) { 
      x[i].style.backgroundColor = "green"; 
     } 
    } 
} 

UPDATE

$('#myTableData').on('change', 'input[type=checkbox]', function() { 
    var self = $(this); 
    if (self.is(':checked')) { 
     self.closest('tr').css('background-color', 'green'); 
    } 
}); 
+0

也許我不清楚。假設我有三行,並使用第二行的複選框,那麼我只希望該行改變顏色,其他行將保持不變。對不起,我可憐的解釋。 – korvar

+0

@korvar使用jQuery查看我更新的答案。 – jcubic

+0

真棒,謝謝@jcubic然而,如果你不介意我問,這改變了複選框的顏色,如果我想整行改變?我試過使用「previoussibling」,但似乎沒有工作。 – korvar

1

您需要循環: 要使用jQuery它會像獲得選定行的顏色變化通過包含在x中的所有元素並設置其顏色:

function ChangeBackgroundColor(status){ 
    if (status.checked) { 
     var x = document.getElementById("myTableData").getElementsByTagName("tr"); 
     for (var i = 1; i < x.length; i++) { 
      x[i].style.backgroundColor = "green"; 
     } 
    } 
} 

或者當你標記的jQuery:

只改變父行使用此:

function ChangeBackgroundColor(status){ 
    if (status.checked) { 
     status.parentNode.style.backgroundColor = "green"; 
    } 
} 

// jQuery alternative: 
$('#myTableData').on('change', ':checkbox', function(e) { 
    if (this.checked) { 
     $(this).closest('tr').css('background-color', 'green'); 
    } 
}); 
+0

也許我不清楚。假設我有三行,並使用第二行的複選框,那麼我只希望該行改變顏色,其他行將保持不變。對不起,我可憐的解釋。 – korvar

+0

我爲你更新了我的答案。 –

-1

JavaScript不具有的功能,以一次更改多個元素的屬性。

我會用for循環。

(function(){ 
     var c,d; 
     HTMLCollection.prototype.LP=NodeList.prototype.LP=Array.prototype.LP=function(a,b){ 
      d=this.length; 
      if(!b) 
       for(c=0;d>c;c++)a(c); 
      else 
       for(c=0;d>c;c++){if(!a(c))break} 
      } 
}()) 

現在使用querySelectorAll ......

var q=document.querySelectorAll(".class, tagName or #id"); 
q.LP(function(i){ 
    q[i].style.backgroundColor="#ffb" 
})