2013-04-29 68 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相应)