【问题标题】:HTML Click Works in IE, not FireFox, ChromeHTML Click 在 IE 中工作,而不是 FireFox,Chrome
【发布时间】:2010-09-21 14:28:57
【问题描述】:

这一定很简单:我基于具有两个选项的表单设置了一个框架页面,其中包含两个可能的目标框架来源。我使用 OnClick 事件来捕获用户的点击以显示相应的页面。它在 Internet Explorer 7 中运行良好,交换了两个源页面。 FireFox 3 和 Chrome 仅显示默认源。

HEAD 脚本部分:

function SwapInlineFrameSource()

{
var rsRadio, rsiFrame;

rsRadio=document.getElementById('County');

rsiFrame=document.getElementById('RatesFrame')

if (rsRadio.checked===true) {

    rsiFrame.src="SantaCruzRates.htm";

    }

else {

    rsiFrame.src="DelNorteRates.htm";

    }

}

身体形式部分(评论显示在这里):

<input type="radio" value="SC" checked name="County"   onclick="SwapInlineFrameSource()"> 
    Santa Cruz
<input type="radio" value="DN" name="County" onclick="SwapInlineFrameSource()" > 
    Del Norte

我错过了什么? (现场示例:http://www.raintrees.com/rates.html

谢谢!

先生

【问题讨论】:

  • 什么是===?真的真的平等吗?
  • 好问题。这可能是原因。试试: if (rsRadio.checked) { ...
  • 防止类型强制 "1" == 1 为真 "1" === 1 由于类型不同而为假。

标签: html internet-explorer firefox-3


【解决方案1】:

我不相信 getElementById 对 firefox 中的帧有效。我一直使用框架[“frameID”],这似乎更一致。

【讨论】:

  • getElementById 在 iframe 上工作正常,但它返回 iframe 元素节点,而不是 window.frames[] 返回的那个框架的“窗口”对象。对于 Firefox 和 IE,此行为相同。 'src' 应该在 iframe 元素节点上设置,因为它是一个 HTML 属性。
【解决方案2】:

你的代码是错误的......

var rsRadio, rsiFrame;
rsRadio=document.getElementById('County');
rsiFrame=document.getElementById('RatesFrame')
if (rsRadio.checked===true) {

我假设您的意思是 getElementsByName 而不是 ID,因为您在这些单选按钮上没有县的 ID。

实际上,您需要确定选中了哪个单选按钮,这样您就可以进行类似的操作(假设只有 2 个选项)

if(document.getElementsByName()[0].checked){
    // show Santa Cruz Rates
}else{
    // show other rates
}

【讨论】:

    【解决方案3】:

    您正在使用 getElementByID,但您没有为输入指定 ID。或许可以考虑这个:

    function SwapInlineFrameSource(rdoButton)
    {
      rsiFrame = document.getElementById("RatesFrame");
      rsiFrame.src = rdoButton.value;
    }
    
    <input type="radio" value="SantaCruzRates.htm" checked="checked" name="County" onClick="SwapInlineFrameSource(this);">Santa Cruz</input>
    <input type="radio" value="DelNorteRates.htm" name="County" onClick="SwapInlineFrameSource(this);">Del Norte</input>
    

    【讨论】:

    • 只是详细说明一下:在 IE 中,getElementByID 函数实际上搜索 name 和 id 属性,这导致该代码在 IE 中(意外地)工作。如果有多个具有指定名称的元素,我相信它会返回它找到的第一个。
    • 你们都帮忙了!上面的代码比我的更简洁和简单(在我的书中绝对是一个胜利),Will 的详细说明解释了为什么它在 IE 而不是其他浏览器中工作。我将缺少的 ID 属性添加到我的 Frame 中,然后它就起作用了。谢谢!先生
    • 感谢您的遗嘱。我不知道为什么我的答案中没有包含这些信息。非常感谢您的澄清。干杯:)
    猜你喜欢
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    相关资源
    最近更新 更多