chiname

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

为解决在datagrid中的onMouseOver效果查找的javascript资料及最终结果

为解决在datagrid中的onMouseOver效果查找的javascript资料及最终结果

为解决在datagrid中的onMouseOver效果查找的javascript资料及最终结果

特殊情况:datagrid的每列class不一样,为实现鼠标划过行变色,由于每个td的样式掩盖了鼠标样式故需要特殊处理

查找到的相关资料
包含表格的文档的DOM结构分析
http://www.yesky.com/20011102/203270.shtml
JS应用DOM入门:简单文档DOM结构分析
http://www.yesky.com/20011102/203197.shtml
JS应用DOM入门:DOM的对象属性
http://www.yesky.com/20011012/200665.shtml
JS应用DOM入门:和DHTML对象模型的比较
http://www.yesky.com/20011011/200432.shtml

如何知道当前mouse点击的是table中的第几行,第几列,以及这个cell的内容

<table onclick="x()">
<tr>
<td>aa</td><td>bb</td><td>cc</td>
</tr>
<tr>
<td>tt</td><td>fdfd</td><td>dfdfd</td>
</tr>
</table>
<script>
function x()
{
=
 event.srcElement
if(o.tagName!="TD"return

alert(o.parentElement.rowIndex 
+""+o.cellIndex+":"+ "=" +o.innerText)
}

</script>

<table onclick="x()">
<tr>
<td>aa</td><td>bb</td><td>cc</td>
</tr>
<tr>
<td>tt</td><td>fdfd</td><td>dfdfd</td>
</tr>
</table>
<script>
function findTD(o){
if (o.nodeName=="TR"||o.nodeName=="TABLE"return
;
if(o.nodeName=="TD"
)
return
 (o);
else

return (o.parentElement);
}

function x()
{
=
 findTD(event.srcElement)
alert(o.parentElement.rowIndex 
+o.cellIndex+":"+ "=" +
o.innerText)
}

</script>

 

Book.
http://vip.5d.cn/friday/upload/SCRIPT56.chm

为表格单元格onmouseover,onmouseout,onclick事件绑定了函数,如何在应用了click时只触发onclick而不触发onmouseout
event.cancelBubble=true; //是阻止事件冒泡,比如说:

<span onclick="alert('parent')">
<span onclick="alert('meizz')">event.cancelBubble=false</span>
</span>

<span onclick="alert('parent')">
<span onclick="alert('meizz'); event.cancelBubble=true">event.cancelBubble=true</span>
</span>

在第2段代码里由于加了阻断, 所以第一层span没有响应点击事件

有两个单元格(tr),命名为tr_A和tr_B,初始的时候,tr_B的背景色为red,tr_A的背景色为white,要求实现如下效果: 
1.当鼠标移动到tr_A时(onMouseOver):tr_A的背景色变为balck; 
2.当鼠标离开tr_A时(onMouseOut):tr_A的背景色变为white; 
3.当鼠标点击tr_A时(onClick):tr_A的背景色变成red,而tr_B的背景色变成white;并且鼠标再次移动到tr_A时,背景色不变,直到tr_B被点击后才会再继续变色。 
 
以上步骤要求能循环实现,请问如何编写js?谢谢各位! 
--------------------------------------------------------------- 
 
这个还没有写完善,你可以加工一下。 

<HTML>  
<HEAD>
  
<TITLE>  New  Document  </TITLE>
  
<META  NAME="Generator"  CONTENT="EditPlus">
  
<meta  http-equiv="Content-Language"  content="zh-cn">
  
<meta  http-equiv="Content-Type"  content="text/html;  charset=gb2312">
  
<SCRIPT  LANGUAGE="JavaScript">
  
<!--
  
function
  test1(obj)  
{  
     obj.bgColor
="#000000"
;  
}
  
function
  test2(obj)  
{  
     obj.bgColor
="#ffffff"
;  
}
  
function
  test3(obj)  
{  
     alert(
"aa"
);  
     obj.bgColor
="#ff0000"
;  
     document.all.tr_b.bgColor
="#ffffff"
  
}
  
//-->  

</SCRIPT>  
</HEAD>
  
<BODY>
  
<table>
  
   
<tr  id="tr_a"  bgColor="blue"  onmouseover="test1(this)"  onmouseout="test2(this)"  onclick="test3(this)"  style="cursor:hand">
  
   
<td>aaaaaaaaaaaaaaa</td></tr>
  
   
<tr  id="tr_b"  style="cursor:hand"><td>bbbbbbbbbbbbbbbbbb</td></tr>
  
</table>
  
</BODY>
  
</HTML> 


对于第三点,你可以设置一个全局变量做为标志。 
以下可以做为参考 

_______________________________________________________________________________

<script>  
var  flag=1
  
function  Mover(go){if(flag==1)  go.bgColor="#ebe9e0";}
  
function  Mout2(come){if(flag==1)  come.bgColor="#e9f4ff";}
  
</script>  
<  td  id=tr_A  bgColor="#e9f4ff"  onmouseover="javascript:Mover(this)"  onmouseout="Mout2(this)"  onclick="this.bgColor='#FF0000';document.all.tr_B.bgColor='#ffffff';flag=0;">baisun</td>
  
<  td  id=tr_B  bgColor="#e9f4ff"  onmouseover="javascript:Mover(this)"  onmouseout="Mout2(this)"  onclick="javascript:flag=(flag==0)?1:0;">baisun</td> 

 

在DATAGRID中

我想每条记录鼠标onmouseover得时候那个单元格变色

Private Sub DataGrid1_ItemDataBound(ByVal sender As ObjectByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
    
If e.Item.ItemIndex <> -1 Then


      e.Item.Attributes.Add(
"onmouseover""this.bgColor='#C1D2EE'")
      
If e.Item.ItemIndex Mod 2 = 0 Then

        e.Item.Attributes.Add(
"bgcolor""#FFFFFF")
        e.Item.Attributes.Add(
"onmouseout""this.bgColor=document.getElementById('DataGrid1').singleValue"
)
      
Else

        e.Item.Attributes.Add(
"bgcolor""oldlace")
        e.Item.Attributes.Add(
"onmouseout""this.bgColor=document.getElementById('DataGrid1').oldValue"
)
      
End If

    
Else
      DataGrid1.Attributes.Add(
"oldValue""oldlace")
      DataGrid1.Attributes.Add(
"singleValue""#FFFFFF"
)
    
End If

  
End Sub


 

最终结果:

//css文件
/*first line bgcolor & font color*/
.line1{ 
 background-color: #F2F2F2;
}

/*second line bgcolor & font color*/
.line2{
 background-color:#F7F7F7;
}

/*the line which was hover*/
.linehover{
 background-color:#FFF9DD;
}

//js文件
<script language=JavaScript>

function getN(className,colNum) //v4.0
= event.srcElement;
//if(o.tagName!="TD") return;

 for(i=0;i<colNum;i++)
 
if(o.tagName=="TD"
)
 
{
  o.parentElement.cells[i].className
=
className; 
 }

  
else
  o.parentElement.parentElement.cells[i].className
=className; 
 }

}

function recoverN(colNum) //v4.0
var line;  var x;
=
 event.srcElement;
//alert(o.tagName);

if(o.tagName!="TD"return;
var str=/^[0-9]+$/
g; 
for(i=0;i<13;i++
)
{
 x
=(i+1)/2

 
if(str.test(x)==true
)
 
{
  o.parentElement.cells[i].className
=
'line1';
  }

 
else
 
{
  o.parentElement.cells[i].className
=
'line2';
 }

 }


}

</script>
</head>
<table width="100%">
<tr id="trline1" onmouseover="getN('linehover','13');" onmouseout="recoverN('13');" >
            
<td id="trline11" height="45" align="center" valign="middle"><img src="images/Logo_FM.jpg" width="18" height="18"><br>
              上海航空
</td>
            
<td id="trline12"  height="45" align="left" valign="middle" class="line1">FM2856<span class="tiplinkblue" title="共享航班">*</span></td>
            
<td id="trline13"  height="45" align="center" valign="middle" class="line2">浦东浦浦</td>
            
<td id="trline14"  height="45" align="center" valign="middle" class="line1">首都首都</td>
            
<td id="trline15" height="45" align="center" valign="middle" class="line2">18:30</td>
            
<td id="trline16"  height="45" align="center" valign="middle" class="line1">20:45</td>
            
<td id="trline17"  height="45" align="center" valign="middle" class="line2"><class="tiplinkorange"  title="喷气飞机">JET</a></td>
            
<td id="trline18"  height="45" align="center" valign="middle" class="line1">&nbsp;</td>
            
<td id="trline19"  height="45" align="center" valign="middle" class="line2">&nbsp;</td>
            
<td id="trline110"  height="45" align="left" valign="middle" class="line1"><input name="radiobutton" type="radio" value="radiobutton">
&gt;</td>
            
<td id="trline111" height="45" align="left" valign="middle" class="line2"><input name="radiobutton" type="radio" value="radiobutton">
&gt;</td>
            
<td id="trline112" height="45" align="left" valign="middle" class="line1"><input name="radiobutton" type="radio" value="radiobutton">
      3 
<class="tiplinkline">经济舱全价</a></td>
            
<td  id="trline113"  height="45" align="left" valign="middle" class="line2"><input name="radiobutton" type="radio" value="radiobutton">
                
<select name="select">
                  
<option> 9折 ¥580 4张</option>
                  
<option>8折 ¥580 3张</option>
                  
<option selected>7折 ¥580 4张</option>
                  
<option>6折 ¥580 1张</option>
                  
<option>9.5 ¥1580 1张</option>
              
</select></td>
          
</tr>
</table>

 


 

posted on 2005-07-04 14:25 DONET之路 阅读(385) 评论(0)  编辑 收藏 收藏至365Key 所属分类: web开发

posted on 2005-12-19 14:56  把我的欢乐带给你  阅读(192)  评论(0)    收藏  举报