我使用<table>
从mysql
数据库填充了php
。 <tr style="background-color:;">
存储在每个记录的数据库中。我做了一个小Javascript
,以便当用户选择{onfocus
)或取消选择onblur
)<input>
时,<tr>
会改变颜色。我设置了它,所以选择后颜色会变成红色,但是我希望它在取消选择后返回默认颜色。
以下是我的代码片段,位于while()
循环中,其中$i
递增:
<tr id="row$i">
<td><input type="text" onfocus="attON('row$i')" onblur="attOFF('row$i')"></td>
</tr>
以下是我的功能:
function attON(id)
{
var row = document.getElementById(id);
row.style.backgroundColor = "#FF0000";
}
function attOFF(id)
{
var row = document.getElementById(id);
row.style.backgroundColor = "";
}
我确信您会猜到,backgroundColor
不会更改回默认值,而是更改为<table>
颜色。我想可能在function attON(id)
中捕获默认颜色并将其设置为全局变量将是答案,但我不知道如何做到这一点。显然任何其他想法都是受欢迎的。干杯!
答案 0 :(得分:1)
function attON(id)
{
var row = document.getElementById(id);
if(!row.getAttribute('data-originalColor')){
var originalColor = row.style.backgroundColor;
row.setAttribute('data-originalColor', originalColor);
}
row.style.backgroundColor = "#FF0000";
}
function attOFF(id)
{
var row = document.getElementById(id);
var originalColor = row.getAttribute('data-originalColor');
row.style.backgroundColor = originalColor;
}
答案 1 :(得分:1)
由于每行有不同的背景突出显示颜色,因此应将这些颜色与标记一起输出为data-
属性。此外,使用this
代替添加具有不同i
值的函数:
<tr id="row$i">
<td><input type="text" onfocus="attON(this);" onblur="attOFF(this);" data-color="$color"></td>
</tr>
您的职能将是:
function attON(el) {
el.parentElement.parentElement.style.backgroundColor = el.getAttribute('data-color');
}
function attOFF(el) {
el.parentElement.parentElement.style.backgroundColor = "";
}
答案 2 :(得分:1)
尝试编辑:
function attOFF(id)
{
var row = document.getElementById(id);
row.style.backgroundColor = "";
}
对此:
function attOFF(id,realcolor)
{
var row = document.getElementById(id);
row.style.backgroundColor = realcolor;
}
然后将attOFF('row$i')
更改为attOFF('row$i','put here the PHP code to show the real color of the tr tag')
答案 3 :(得分:0)
我会用JS组合CSS规则。
在CSS中:
tr.activeRow {
background: red !important;
}
这是Javascript PART:
function attON(rowID) {
// to be sure that there is always just on active row...
var activeRows = document.getElementsByClassName('activeRow');
for(a in activeRows) {
activeRows[a].className = '';
}
// set classname to override the inline style
document.getElementById(rowID).className="activeRow";
}
function attOFF(rowID) {
// jus remove the classname
document.getElementById(rowID).className="";
}
答案 4 :(得分:0)
你介意在每个tr中添加一个隐藏字段,用于存储数据库中的颜色 此外,我只在事件上发送了id到函数,并在javascript中添加了带有id的“row”。
<tr id="row$i">
<td>
<input type="text" onfocus="attON('$i')" onblur="attOFF('$i')">
<input type="hidden" value="color from database" name="$iHC" id="$iHC">
</td>
</tr>
Javascript功能:
function attON(id){
var row = document.getElementById("row"+id);
row.style.backgroundColor = "#FF0000";
}
function attOFF(id){
var row = document.getElementById("row"+id);
//fetch the value from HTML element and assign it to a javascript variable
//remember to append "#" to value of color if you have not stored in database
var color = document.getElementById(id+"HC").value();
row.style.backgroundColor = color;
}