2013-04-29 64 views
0

我想更改列表框中的iframe源。這是我的代碼。更改列表框中的iframe源

<iframe id="iframeID" frameborder="0" width="100%" height="300px"></iframe> 
    <asp:Button ID="btnView" runat="server" Text="Pop Up HTML Preview" 
       OnClientClick="ShowPopUp();" /> 

ShowPopUp = function() { 
     var x = document.getElementById('<%=ListBox1.ClientID %>'); 
     var val = x.options[x.selectedIndex].Value; 
     document.getElementById("iframeID").src = val; 

但錯誤說我有一個未定義的iframe。
有什麼不對?
請幫幫我。謝謝:)

+0

也許你缺少'RUNAT =服務器'嘗試像這樣''iframe name =「myIframe」id =「ifraneID」width =「100px」height =「200px」runat = server>​​' – MethodMan 2013-04-29 03:43:09

+0

您應該使用'value'而不是'Value 'in:'var val = x.options [x.selectedIndex] .Value;' – fardjad 2013-04-29 03:51:39

+0

@fardjad謝謝。我忘了ASP.Net是如何區分大小寫的。 – 2013-04-29 05:12:02

回答

0

您可以更改使用jQuery來源:

$("#content").attr('src', 'http://your new source here');

所以當在列表框中選擇的項目發生變化,你可以調用這個方法。

+1

把jQuery到處都不是解決方案,這是一個解決方法 – Lemurr 2013-04-29 04:38:50

+0

@PabloLemurr但爲什麼不在這段代碼中使用它?另一個選項將調用asp方法來這樣做,然後你必須使回發或使用更新面板.. jquery提供了一個更簡單的解決方案,我認爲.. – HasanAboShally 2013-04-29 04:41:51

+0

它不會工作,因爲在大多數情況下,ASP將改變ID爲我自己,正如我在我的帖子中解釋的,除了如果沒有jQuery庫已經包含沒有一點加載它只是爲了完成這個單一的任務 – Lemurr 2013-04-29 04:56:20

0

使用value,JavaScript是大小寫敏感的

var val = x.options[x.selectedIndex].value; 

,改變OnClientClick如下

<asp:Button ID="btnView" runat="server" Text="Pop Up HTML Preview" 
OnClientClick="ShowPopUp(); return false;" /> 

按鈕單擊事件充分後回到請求服務器。因此,您的Ifram在回發之後將再次具有默認的src值。在這裏你沒有給出默認的src值。所以沒有點擊按鈕後會得到。點擊後添加return false按鈕點擊後不會回發。

0

如果不這樣做,從C#什麼,讓一個普通按鈕 - ASP往往看中的前綴添加到其控制的ID(如ContentPlaceHolder1_btnView),而那些不能被.ID從C#代碼訪問的方式。所以,你可以chceck這些ID(這是能夠將移到別的地方來改變)由瀏覽器的源代碼檢查,或使用

<input type="button" ID="btnView" Value="Pop Up HTML Preview" 
       OnClick="ShowPopUp();" /> 

(修改您的JS相應)