字段中选项卡上的JavaScript高亮表单元格
时间:2020-03-06 14:53:46 来源:igfitidea点击:
我有一个摆在桌子上的网站。 (长期抵押表格)
每个表格单元格中都有一个HTML对象。 (文本框,单选按钮等)
当每个表单元格都被"标签"到其中时,该怎么办呢?该单元格以非常浅的红色突出显示(不要太夸张,而是告诉用户它们在哪里)?
解决方案
可能:
<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'); });
这就是说,当表中的任何输入元素都处于焦点下时,向其添加"突出显示"类,一旦失去焦点,则删除该类。
将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和MochiKit,但还有其他一些也可以使用。
从我开始写这个答案到我发布它的时间之间,有人发布了代码,该代码可以显示我们将如何在jQuery中执行类似的操作,简而言之!尽管我喜欢图书馆,但我知道有些人不能或者不会使用图书馆,在这种情况下,我的代码可以完成这项工作。