2011-08-26 80 views
1

我用Visual Studio和aspx開發了一款紙牌遊戲。asp.net onMouseEnter修改按鈕的位置

在頁面head標籤我說像這樣的javascript函數:ImageButton的,其位置是絕對的,其樣式屬性看起來像這樣在礦井.aspx頁面中:

<script type="text/javascript"> 
    function cardMouseEnter() 
    { document.forms[0].bCard1.style.top -= 5; } 
</script> 

A卡由ASP爲代表

<asp:ImageButton ID="bNCard1" runat="server" 
     style="position: absolute; top: 3px; left: 2px; 
     height: 98px; width: 73px;" ></asp:ImageButton> 

在的加載事件代碼隱藏文件I加入:

bCard1.Attributes.Add("onMouseOver", "cardMouseEnter()") 

當我嘗試運行頁面並將鼠標放在卡上時,我有一個javascript錯誤:

Microsoft JScript運行時錯誤:無法獲取屬性'style'的值:object爲null或undefined。

當我檢查的代碼,這是我能在一個ASPX看到(動態)生成的頁面:

<input type="image" name="bCard1" id="bNorth1" onMouseOver="cardMouseEnter()" src="SomeCard.jpg" 
     style="border-width:0px;top: 3px; left: 2px; position: absolute; 
     height: 106px; width: 73px; font-size:1.4em;" /> 

我覺得這是不可思議的,因爲動態生成的頁面有一個「風格」屬性。 任何線索?

回答

1
  1. 使用的document.getElementById(),以獲得問題和.getAttribute(元素),以獲取其風格和setAttribute()來設置它
  2. 我強烈建議你看看jQuery的任何東西的JavaScript http://jquery.com/
1

腳本:

function cardMouseEnter(id) 
{ 
    document.getElementById(id).style.top -= 5; 
} 

代碼隱藏:

bNCard1.Attributes.Add("onMouseOver", "cardMouseEnter('" + bNCard1.ClientID + "')"); 

標記:

<asp:ImageButton ID="bNCard1" runat="server" 
     style="position: absolute; top: 3px; left: 2px; 
     height: 98px; width: 73px;" ></asp:ImageButton> 
+0

你不能只是做:cardMouseEnter(這個)和p屁股在實際cotnrol? –

+0

是的,你可以,我會親自做與不顯眼的jQuery和使用MVC。 –

+0

裏克的解決方案適用於'一些'風格的屬性,如邊框,但不適用於頂部位置。另一方面,cardMouseEnter(this)不起作用。對Rick +1,但我不接受解決方案,因爲style.top無法識別。 –

1

只是這樣做:

<input type="image" name="bCard1" id="bNorth1" onMouseOver="cardMouseEnter(this)" ...> 

<asp:ImageButton ID="bNCard1" runat="server" onmouseover="cardMouseEnter(this)" ...> 

你JS功能:

function cardMouseEnter(ctrlToMove) { 
    ctrlToMove.style.top -= 5; 
}