Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   событие onLoad (https://javascript.ru/forum/css-html/8164-sobytie-onload.html)

chelsea 11.03.2010 14:14

событие onLoad
 
добрый день.
подскажите как реализовать чтоб по событию onload поля <input type="radio"> переходили в состояние disabled. запускаю ф-цию ничего не срабатывает.

Kolyaj 11.03.2010 14:34

Странно, у меня срабатывает.

chelsea 11.03.2010 14:53

Так может приведешь пример реализации

Kolyaj 11.03.2010 14:57

Там может покажешь, что у тебя не срабатывает, а то телепаты в отпуске.

Shaci 11.03.2010 14:58

вот моя функция, запускаю, и она срабатывает
<script>
  window.onload = function(){
    var myForm = document.getElementById('myForm');
    for (var i = 0; i < myForm.elements.length; i++)
         myForm.elements[i].disabled = true;
  }
</script>
<body>
<form id="myForm">
<input type="radio" name="na">1</input>
<input type="radio" name="na">2</input>
<input type="radio" name="na">3</input>
<input type="radio" name="na">4</input>
</form>
</body>

Shaci 11.03.2010 17:55

вопрос возник
<script>
  window.onload = function(){
    //в случае с div
    alert(document.getElementById('test').childNodes.length);//в IE - 3, в FF - 5 т.к. DOM не нормализован
    //здесь вроде все понятно
    //FireBug показывает для document.getElementBiId('test').childNodes:
    //<TextNode textContent="\n ">
    //div
	//<TextNode textContent="\n">
	//span
	//<TextNode textContent="lala\n">
    //
    var myForm = document.getElementById('myForm');    
    alert(myForm.childNodes.length);//9 в FF,  15?? в IE
    
    for (var i = 0; i < myForm.childNodes.length; i++)        
         alert(myForm.childNodes[i].tagName);
         //в IE 
         // INPUT
         // undefined
         // /INPUT
         // undefined
         // INPUT
         // undefined
         // /INPUT
         // INPUT
         // undefined
         // /INPUT
         // undefined
         // INPUT
         // undefined
         // /INPUT
         // undefined
         //=> IE воспринимает теги input как два отдельных элемента Dom?,
         // т.е. всю вот эту штуку: <input type="radio" name="na">1</input> 
         //как 3 отдельных элемента DOM: 2 объекта Element и один textNode между ними?
         // тогда почему есть еще undefined после /INPUT??           
         
         //FF, получается, 'показывает' один input и следующий за ним текстовый узел
         //Ie - 3 узла, но ни в одном случае, текстовый узел не является вложенным


  }
</script>
<body>
<form id="myForm" action="#">
<input type="radio" name="na">1</input>
<input type="radio" name="na">2</input><input type="radio" name="na">3</input>
<input type="radio" name="na">4</input>
</form>

<div id="test">
    <div>parampampam</div>
<span></span>lala
</div>
</body>

chelsea 11.03.2010 18:15

а почему не работает такая конструкция
<script>
window.onload = Abc();
function Abc(){
var val = document.getElementByName('abc');
val.disabled = true;
}
</script>
<form>
<input type="radio" name="abc">1</input>
</form>

Octane 11.03.2010 18:19

Цитата:

Сообщение от chelsea
а почему не работает такая конструкция
<script>
window.onload = Abc();
function Abc(){
var val = document.getElementByName('abc');
val.disabled = true;
}
</script>
<form>
<input type="radio" name="abc">1</input>
</form>


что возвращает функция Abc? А функция Abc возвращает undefined
function Abc(){
//var val = document.getElementByName('abc');
//val.disabled = true;
}

alert(Abc())


Значит вы делаете что? Вы присваиваете свойству onload объекта window значение undefined:
window.onload = undefined

вот и не работает. Нужно присваивать ссылку на функцию:
window.onload = Abc;


И метода getElementByName не существует, есть метод getElementsByName.

chelsea 11.03.2010 18:28

Все равно не работает

Shaci 11.03.2010 18:37

<script>
window.onload = Abc;
function Abc(){
var val = document.getElementById('abc');
val.disabled = true;
}
</script>
<form>
<input type="radio" id="abc">1</input>
</form>


Часовой пояс GMT +3, время: 01:29.