2011-10-31 41 views
1

我正在寫一個網址爲ASP.NetJavascript將無法在Html服務器控件上工作?

我將有很多的html generic controls<div> <span>等..

我有一些onclick JavaScript函數,onmouseover JavaScript函數..

他們正在很好..

然後,我需要在服務器端控制它們。

所以,我想補充runat="server" ..

之後,所有的JavaScript的不工作了..

我知道他們不工作怎麼把所有的事件現在回到服務器端。

那麼,有沒有辦法讓他們工作?

對於例如,

<div id="myDiv1" onclick="myfunction(para1)"><img src="..." /></div> 

上面的代碼工作..

<div id="myDiv1" runat="server" onclick="myfunction(para1)"><img src="..." /></div> 

上面的代碼是不工作...

我可以使它發揮作用,可能是通過

<div id="externalDiv1" onclick="myfunction(para1)"><div id="myDiv1" runat="server" ><img src="..." /></div></div> 

是th還有其他方式嗎?

+0

代碼?你提出的建議並不合理。 –

+0

我加了eg代碼。 – william

+0

什麼JavaScript看起來不工作? –

回答

0

就javascript而言,服務器端或客戶端控件沒有什麼區別。所有的服務器端控件最終被渲染爲普通的HTML控件。如果你的javascript功能不起作用可能是因爲你正在通過錯誤的ID訪問它們,因爲通過使它們成爲服務器端控件,它們現在可以具有遵循諸如<parent_id>_<control_id>這樣的模式的ID。

例如,跨度元件聲明如下:

<span id="mylabel" runat="server"> testing</span> 

最終可能被呈現爲:

<span id="MainContent_mylabel"> testing</span> 

ASP.NET 4.0有一個稱爲CliendIDMode功能,它可以被設置爲static ,也就是說,頁面呈現後,標記上的ID將保持不變。

1

我假設你使用document.getElementById()通過它的id獲取元素。如果使用母版頁,服務器控件的ID將在渲染到頁面後更改,在這種情況下,您必須將其ClientID 用於

var myDiv1 = document.getElementById("<%= myDiv1.ClientID %>"); 
相關問題