2011-04-14 2 views
1

Я пытаюсь использовать JavaScript для обновления проверенного статуса переключателя на сайте, управляемом крупной компанией. Вот проблема: на странице есть повторяющиеся идентификаторы и имена для двух связанных переключателей, и они находятся в ячейке строки неназванной таблицы. Я хочу выбрать первый. Спасибо за любую помощь.Использование JavaScript для обновления переключателя в ячейке таблицы

Ниже основной HTML

<table cellspacing='0' cellpadding='0' border='0'> 
    <tr> 
     <td> 
      <img alt='spacer' src='../Images/blank.gif' width='10' height='1' border='0' /> 
     </td> 
     <td id='A-Q1_0200-1' valign='top'> 
      <font size='-1'> 
       <input type='radio' name='Q1_0200' id='Q1_0200' value='1' onclick='FormChanged()' 
       class='bodyInput' /> 
      </font> 
     </td> 
     <td colspan='1' valign='top' id='A-Q1_0200-1-T'> 
      <font size='-1'> 
       &nbsp;Yes 
      </font> 
     </td> 
     <td> 
      <font size='-1'> 
       &nbsp; 
      </font> 
     </td> 
     <td id='A-Q1_0200-2' valign='top'> 
      <font size='-1'> 
       <input type='radio' name='Q1_0200' id='Q1_0200' value='2' checked='checked' onclick='FormChanged()' 
       class='bodyInput' /> 
      </font> 
     </td> 
     <td colspan='1' valign='top' id='A-Q1_0200-2-T'> 
      <font size='-1'> 
       &nbsp;No 
      </font> 
     </td> 
    </tr> 
</table> 

Ниже приведены различные примеры JavaScript я пытался обновить радио, чтобы выбрать первый вариант радио.

document.getElementById('A-Q1_0200-1').Q1_0201.checked='checked'; 

    document.getElementById('A-Q1_0200-1').radio[0].checked=TRUE; 

    document.getElementById('Q1_0200').checked=TRUE 

    document.getElementById('Q1_0200').checked=’TRUE 
+0

Я пытаюсь изменить первый элемент радио, не проверенный на «проверено». –

ответ

0

Вы не можете иметь повторяющиеся коды и ожидать getElementById() работать. ID означает «идентификатор», и каждый идентификатор должен быть уникальным. Вот почему ваш третий и четвертый примеры не удались.

Следующий код выберет родительский <td> по его идентификатору, затем он выберет первого потомка input и установит свойство checked.

document.getElementById('A-Q1_0200-1').getElementsByTagName("input")[0].checked = "checked"; 
+0

Спасибо - это имеет смысл. Я попробовал, но это не сработало. Кроме того, что определяет, следует ли использовать true или «checked» в конце? (Я пробовал оба) –

+0

Джесси, я попробовал это за пределами моей IDE - с помощью Firebug (как предлагалось ниже другого ответчика). Он работает - спасибо. Единственная проблема заключается в том, что, пока он меняет переключатель на «отмечен», он не открывает связанные каскадные текстовые поля на основе этого выбора. Возможно, я должен инициировать что-то еще для этого. –

+0

Получил это - просто нужно было запустить функцию за другим скриптом. Еще раз спасибо! –

0

Адрес JSFiddle Demo:. Это позволит вам выбрать первый элемент типа радио.

Один из способов сделать это - использовать getElementsByTagName и проверить наличие первого вхождения типа радио, но идентификатор должен быть уникальным. Похоже, что это вне вашего контроля:

var myInput = document.getElementsByTagName('input'); 

for(var i=0; i<myInput.length; i++){ 
    if(myInput[i].type == 'radio'){ 
     console.log(myInput[i]); 
     break; 
    } 
} 

console.log даст вам следующий элемент:

<input type=​"radio" name=​"Q1_0200" id=​"Q1_0200" value=​"1" onclick=​"FormChanged()​" class=​"bodyInput">​ 

и оттуда вы можете установить выбранный элемент к зарегистрированному истина: myInput[i].checked = true; или myInput[i].checked = 'checked';

+0

Спасибо - я тоже проверю этот вариант. Хотя я бы не подумал, что это будет иметь значение, я тестирую это через Apple xCode через приложение iOS, которое я разрабатываю. Опять же все другие JS на странице (обновление текстового поля) отлично работают. Есть ли другой инструмент, который я мог бы использовать для тестирования этого же js на чужом веб-сайте, чтобы узнать, работает ли он? (например, Aptana или другой инструмент) –

+0

@user вы можете использовать инструмент разработчика хром или firebug firefox для отладки js – kjy112

+0

Спасибо, Firebug замечательный, и это помогло. –

0

getElementById вернет вам первый найденный элемент. И если вы хотите его проверить, вам нужно сделать следующее: document.getElementById('Q1_0200').checked = 'checked';

+0

является правильным. Это будет работать для вашей ситуации, просто молитесь, чтобы порядок html не изменился на вас. – jessegavin

+0

Спасибо за ваш ответ - это не помогло мне. Может ли какой-либо CSS-скрипт или какой-либо другой скрипт запускать радиокнопки не через js?Я смог выбрать и обновить текстовые поля без проблем. –

+0

@ user689852 У вас может быть другой элемент с id = Q1_0200 где-то, что не является элементом радиовхода? Предоставьте дополнительную информацию о том, почему/что не удалось. Firebug и инструменты для разработчиков Chrome - отличные инструменты для отладки вашего кода. – LoveGandhi

Смежные вопросы