admin管理员组文章数量:1322351
I'm trying to change the colour of a <td>
in my .html
file. Here is what I have but for some reason it doesn't seem to be working.
My .html
file:
<table>
<tr id = "table_row">
<td>Computers</td>
<td>Price</td>
<td>Location</td>
</tr>
</table>
And now my .js
file:
function changeBorderColor() {
var table = document.getElementById("table_row").getElementsByTagName("td");
table.style.borderColor = "red";
}
Why doesn't my <td>
change colour when I activate the changeBorderColor()
function? Thanks in advance for any tips and help!
I'm trying to change the colour of a <td>
in my .html
file. Here is what I have but for some reason it doesn't seem to be working.
My .html
file:
<table>
<tr id = "table_row">
<td>Computers</td>
<td>Price</td>
<td>Location</td>
</tr>
</table>
And now my .js
file:
function changeBorderColor() {
var table = document.getElementById("table_row").getElementsByTagName("td");
table.style.borderColor = "red";
}
Why doesn't my <td>
change colour when I activate the changeBorderColor()
function? Thanks in advance for any tips and help!
- getElementsByTagName is a NodeSet – epascarello Commented Jan 27, 2015 at 20:35
-
Also, how do you call
changeBorderColor
? – j08691 Commented Jan 27, 2015 at 20:36 - Are you using jQuery by chance? Or are you limited to using vanilla JavaScript? – Josh Taylor Commented Jan 27, 2015 at 20:39
4 Answers
Reset to default 4The getElementsByTagName()
method will return an array of elements matching the tag selector. So you would need to iterate througth it to change each element:
Simple example:
function changeBorderColor() {
var table = document.getElementById("table_row").getElementsByTagName("td");
for(var i=0; i<table.length; i++) {
var td = table[i];
td.style.borderColor = "red";
}
}
.getElementsByTagName("td")
returns a NodeList, you will have to loop through each td
and assign the border
individually.
You also need to specify the borderWidth
and borderStyle
properties.
function changeBorderColor() {
var td = document.getElementById("table_row").getElementsByTagName("td");
for (i = 0; i < td.length; i++) {
td[i].style.borderColor = "red";
td[i].style.borderWidth = "1px";
td[i].style.borderStyle = "solid";
}
}
changeBorderColor()
<table>
<tr id="table_row">
<td>Computers</td>
<td>Price</td>
<td>Location</td>
</tr>
</table>
You can use some Jquery here.For example:
function changeBackground(){
$("td").css("border","2px solid red");
}
If you are allowed to use jQuery, here is a slightly more verbose example:
$('#table_row td').each(function(index){
//Do something with each result. In this case - add a border
$(this).css({ 'border': '1px solid red' });
});
Here is a fiddle for the jQuery example: http://jsfiddle/k3d6peLy/
Alternatively, if you don't have to worry about supporting anything before IE8, you could also use JavaScript's 'querySelectorAll()' method:
var elements = document.querySelectorAll('#table_row td');
for(var i = 0; i < elements.length; i++){
elements[i].style.border = '1px solid red';
}
Here is a fiddle for the 'querySelectorAll()' example: http://jsfiddle/k3d6peLy/1/
本文标签: htmlHow can I change the border colour of a lttdgt using JavaScriptStack Overflow
版权声明:本文标题:html - How can I change the border colour of a <td> using JavaScript? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742113969a2421383.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论