Это должно быть что-то простое: я настраиваю страницу фреймов с двумя возможными источниками для целевого фрейма на основе формы с двумя параметрами. Я использовал событие 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";
}
}
Раздел формы BODY (добавлен комментарий для отображения здесь):
<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 будет ложным из-за разных типов.






Я не верю, что getElementById работает с фреймами в firefox. Я всегда использовал фреймы ["frameID"], которые, кажется, работают более стабильно.
getElementById отлично работает с фреймами iframe, но возвращает узел элемента iframe, а не объект «window» для этого фрейма, возвращенный функцией window.frames []. Это поведение одинаково для Firefox и IE. «Src» должен быть установлен в узле элемента iframe, поскольку это атрибут HTML.
Ваш код неверен ....
var rsRadio, rsiFrame;
rsRadio=document.getElementById('County');
rsiFrame=document.getElementById('RatesFrame')
if (rsRadio.checked===true) {
Я предполагаю, что вы имеете в виду getElementsByName, а не ID, потому что у вас нет идентификатора округа на этих переключателях.
На самом деле вам нужно определить, какой переключатель установлен, чтобы вы могли что-то вроде (при условии, что есть только 2 варианта)
if (document.getElementsByName()[0].checked){
// show Santa Cruz Rates
}else{
// show other rates
}
Вы используете getElementByID, но не указываете идентификаторы для своих входных данных. Возможно, вместо этого подумайте об этом:
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. Если есть более одного элемента с указанным именем, я считаю, что он возвращает первый найденный.
Вы оба помогли! Приведенный выше код намного чище и проще, чем мой (определенная победа в моей книге), и разработка Уилла объяснила, почему он работает в IE, а не в других браузерах. Я добавил недостающий атрибут ID в свой фрейм и presto, это сработало. Спасибо! Мистер
Спасибо за это Уиллу. Не знаю, почему я не включил эту информацию в свой ответ. Мы очень ценим ваше разъяснение. Ваше здоровье :)
Что === делать? Неужели действительно равны?