JavaScript高亮显示字段中选项卡上的表格单元格
我有一个在表格中列出的网站。长按揭表格 每个表单元格中都有一个HTML对象。文本框、单选按钮等 当每个表格单元格都用标签插入时,我该怎么做?用一个非常浅的红色突出显示单元格,以避免引起注意,但告诉用户它们在哪里?可能:JavaScript高亮显示字段中选项卡上的表格单元格,javascript,html,Javascript,Html,我有一个在表格中列出的网站。长按揭表格 每个表单元格中都有一个HTML对象。文本框、单选按钮等 当每个表格单元格都用标签插入时,我该怎么做?用一个非常浅的红色突出显示单元格,以避免引起注意,但告诉用户它们在哪里?可能: <script type="text/javascript"> //getParent(startElement,"tagName"); function getParent(elm,tN){ var parElm = elm.parentNode; whil
<script type="text/javascript">
//getParent(startElement,"tagName");
function getParent(elm,tN){
var parElm = elm.parentNode;
while(parElm.tagName.toLowerCase() != tN.toLowerCase())
parElm = parElm.parentNode;
return parElm;
}
</script>
<tr><td><input type="..." onfocus="getParent(this,'td').style.backgroundColor='#400';" onblur="getParent(this,'td').style.backgroundColor='';"></td></tr>
可能:
<script type="text/javascript">
//getParent(startElement,"tagName");
function getParent(elm,tN){
var parElm = elm.parentNode;
while(parElm.tagName.toLowerCase() != tN.toLowerCase())
parElm = parElm.parentNode;
return parElm;
}
</script>
<tr><td><input type="..." onfocus="getParent(this,'td').style.backgroundColor='#400';" onblur="getParent(this,'td').style.backgroundColor='';"></td></tr>
使用jQuery可以简化您的生活,您可以执行以下操作:
$('#mytableid input').focus( function() {
$(this).addClass('highlight');
}).blur( function() {
$(this).removeClass('highlight');
});
这基本上是说,当表中的任何输入元素处于焦点下时,将highlight类添加到其中,一旦失去焦点,则删除该类
将css设置为:
input.highlight { background-color: red; }
你应该被设置好。使用jQuery让你的生活更轻松,你可以这样做:
$('#mytableid input').focus( function() {
$(this).addClass('highlight');
}).blur( function() {
$(this).removeClass('highlight');
});
这基本上是说,当表中的任何输入元素处于焦点下时,将highlight类添加到其中,一旦失去焦点,则删除该类
将css设置为:
input.highlight { background-color: red; }
您应该被设置。这是我测试代码的表:
<table id="myTable">
<tr>
<td><input type="text" value="hello" /></td>
<td><input type="checkbox" name="foo" value="2" /></td>
<td><input type="button" value="hi" /></td>
</tr>
</table>
以下是有效的代码:
// here is a cross-browser compatible way of connecting
// handlers to events, in case you don't have one
function attachEventHandler(element, eventToHandle, eventHandler) {
if(element.attachEvent) {
element.attachEvent(eventToHandle, eventHandler);
} else if(element.addEventListener) {
element.addEventListener(eventToHandle.replace("on", ""), eventHandler, false);
} else {
element[eventToHandle] = eventHandler;
}
}
attachEventHandler(window, "onload", function() {
var myTable = document.getElementById("myTable");
var myTableCells = myTable.getElementsByTagName("td");
for(var cellIndex = 0; cellIndex < myTableCells.length; cellIndex++) {
var currentTableCell = myTableCells[cellIndex];
var originalBackgroundColor = currentTableCell.style.backgroundColor;
for(var childIndex = 0; childIndex < currentTableCell.childNodes.length; childIndex++) {
var currentChildNode = currentTableCell.childNodes[childIndex];
attachEventHandler(currentChildNode, "onfocus", function(e) {
(e.srcElement || e.target).parentNode.style.backgroundColor = "red";
});
attachEventHandler(currentChildNode, "onblur", function(e) {
(e.srcElement || e.target).parentNode.style.backgroundColor = originalBackgroundColor;
});
}
}
});
这里可能有你可以清理的东西,但我很快就把它们整理好了。即使每个单元格中有多个对象,这种方法仍然有效
不用说,如果你使用一个图书馆来帮助你完成这项工作,这会容易得多。我喜欢这两个图书馆,尽管还有其他图书馆也可以
从我开始写这个答案到我发布这个答案,有人发布了代码,显示了你将如何在jQuery中做类似的事情——正如你所看到的,要短得多!虽然我喜欢库,但我知道有些人不能或不愿使用库——在这种情况下,我的代码应该可以完成这项工作。这是我测试代码的表:
<table id="myTable">
<tr>
<td><input type="text" value="hello" /></td>
<td><input type="checkbox" name="foo" value="2" /></td>
<td><input type="button" value="hi" /></td>
</tr>
</table>
以下是有效的代码:
// here is a cross-browser compatible way of connecting
// handlers to events, in case you don't have one
function attachEventHandler(element, eventToHandle, eventHandler) {
if(element.attachEvent) {
element.attachEvent(eventToHandle, eventHandler);
} else if(element.addEventListener) {
element.addEventListener(eventToHandle.replace("on", ""), eventHandler, false);
} else {
element[eventToHandle] = eventHandler;
}
}
attachEventHandler(window, "onload", function() {
var myTable = document.getElementById("myTable");
var myTableCells = myTable.getElementsByTagName("td");
for(var cellIndex = 0; cellIndex < myTableCells.length; cellIndex++) {
var currentTableCell = myTableCells[cellIndex];
var originalBackgroundColor = currentTableCell.style.backgroundColor;
for(var childIndex = 0; childIndex < currentTableCell.childNodes.length; childIndex++) {
var currentChildNode = currentTableCell.childNodes[childIndex];
attachEventHandler(currentChildNode, "onfocus", function(e) {
(e.srcElement || e.target).parentNode.style.backgroundColor = "red";
});
attachEventHandler(currentChildNode, "onblur", function(e) {
(e.srcElement || e.target).parentNode.style.backgroundColor = originalBackgroundColor;
});
}
}
});
这里可能有你可以清理的东西,但我很快就把它们整理好了。即使每个单元格中有多个对象,这种方法仍然有效
不用说,如果你使用一个图书馆来帮助你完成这项工作,这会容易得多。我喜欢这两个图书馆,尽管还有其他图书馆也可以
从我开始写这个答案到我发布这个答案,有人发布了代码,显示了你将如何在jQuery中做类似的事情——正如你所看到的,要短得多!虽然我喜欢库,但我知道有些人不能或不会使用库——在这种情况下,我的代码应该可以完成这项工作。这将是一种痛苦的方式,而且不遵循低调JavaScript的规则。如果这对某人来说不是问题,那么很好,但我肯定会避开这些类型的解决方案。这将是一种痛苦的方式,并且不遵循低调JavaScript的规则。如果这不是某人的问题,那么好吧,但我肯定会避开这些类型的解决方案。note to OP-这使用jQuery,以防您不认识$note to OP-这使用jQuery,以防您不认识$