2008-11-10 7 views
1

Cela doit être quelque chose de simple: J'ai mis en place une page de cadres avec deux sources possibles pour le cadre cible basé sur un formulaire avec deux options. J'ai utilisé l'événement OnClick pour intercepter le clic de l'utilisateur pour afficher la page appropriée. Cela fonctionne très bien dans Internet Explorer 7, en échangeant les deux pages source. FireFox 3 et Chrome affichent uniquement la source par défaut.HTML Click Works dans IE, pas FireFox, Chrome

Têtière Script:

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"; 

    } 

} 

CORPS section Formulaire (commenté pour afficher ici):

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

Qu'est-ce que je manque? (Exemple en direct: http://www.raintrees.com/rates.html)

Merci!

mr

+0

Qu'est-ce que === faire? Vraiment vraiment égal? –

+0

Bonne question. ce pourrait être la raison. Essayez: if (rsRadio.checked) {... – bart

+0

Il empêche la coercition de type "1" == 1 sera vrai "1" === 1 sera faux en raison de différents types. –

Répondre

7

Vous utilisez getElementByID, mais vous ne spécifiez pas ID pour vos entrées. Peut-être considérer cela à la place:

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> 
+0

Juste pour préciser ceci: dans IE, la fonction getElementByID recherche les attributs name et id, ce qui fait que ce code fonctionne (accidentellement) dans IE. S'il y a plus d'un élément avec le nom spécifié, je crois qu'il renvoie le premier qu'il trouve. –

+0

Vous avez tous deux aidé! Le code ci-dessus est beaucoup plus propre et plus simple que le mien (une victoire certaine dans mon livre) et l'élaboration de Will a expliqué pourquoi il fonctionnait dans IE et pas dans d'autres navigateurs. J'ai ajouté l'attribut ID manquant à mon cadre et presto, cela a fonctionné. Merci! mr – Raintree

+0

Merci pour cette volonté. Je ne sais pas pourquoi je n'ai pas inclus cette information dans ma réponse. Votre clarification est grandement appréciée. À votre santé :) –

0

Je ne crois pas que fonctionne getElementById sur des cadres dans Firefox. J'ai toujours utilisé les cadres ["frameID"], qui semble fonctionner de manière plus cohérente.

+0

getElementById fonctionne correctement sur les iframes, mais il renvoie le noeud de l'élément iframe, pas l'objet 'window' pour cette image tel qu'il est retourné par window.frames []. Ce comportement est le même pour Firefox et IE. 'Src' doit être défini sur le noeud de l'élément iframe car il s'agit d'un attribut HTML. – bobince

2

Votre code est erroné ....

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

Je suppose que vous parlez getElementsByName et non ID becasue vous ne disposez pas d'un ID de comté sur les boutons radio.

En fait, vous devez déterminer quel bouton radio en est cochée pour que vous puissiez quelque chose comme (en supposant qu'il n'y a que des 2 options)

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