HTML Click работает в IE, а не в FireFox, Chrome

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

Спасибо!

Мистер

Что === делать? Неужели действительно равны?

1800 INFORMATION 10.11.2008 12:42

Хороший вопрос. это может быть причиной. Попробуйте: if (rsRadio.checked) {...

bart 10.11.2008 12:47

Это предотвращает приведение типа "1" == 1 будет истинным "1" === 1 будет ложным из-за разных типов.

James Hughes 10.11.2008 12:47
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
3
3 118
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я не верю, что getElementById работает с фреймами в firefox. Я всегда использовал фреймы ["frameID"], которые, кажется, работают более стабильно.

getElementById отлично работает с фреймами iframe, но возвращает узел элемента iframe, а не объект «window» для этого фрейма, возвращенный функцией window.frames []. Это поведение одинаково для Firefox и IE. «Src» должен быть установлен в узле элемента iframe, поскольку это атрибут HTML.

bobince 10.11.2008 13:57

Ваш код неверен ....

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. Если есть более одного элемента с указанным именем, я считаю, что он возвращает первый найденный.

Will Wagner 10.11.2008 19:46

Вы оба помогли! Приведенный выше код намного чище и проще, чем мой (определенная победа в моей книге), и разработка Уилла объяснила, почему он работает в IE, а не в других браузерах. Я добавил недостающий атрибут ID в свой фрейм и presto, это сработало. Спасибо! Мистер

Raintree 11.11.2008 01:36

Спасибо за это Уиллу. Не знаю, почему я не включил эту информацию в свой ответ. Мы очень ценим ваше разъяснение. Ваше здоровье :)

OJ. 11.11.2008 04:45

Другие вопросы по теме