Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Доступ к элементу страницы по параметру name
 
 автор: amigo63   (23.01.2009 в 13:45)   письмо автору
 
 

Всем привет! Например, есть элемент
<input type="text" name="directory">

где-то видел код, в котором доступ к input-ам происходит напрямую, например:
document.directory.value=message;

но у меня так не работает. Реально ли вообще "подцепить" элемент по name?

  Ответить  
 
 автор: Николай2357   (23.01.2009 в 14:37)   письмо автору
 
   для: amigo63   (23.01.2009 в 13:45)
 

Атрибут name используется в формах. Нужно указать имя формы:
document.form_name.directory.value=message;

а лучше это делать через id

  Ответить  
 
 автор: amigo63   (23.01.2009 в 15:03)   письмо автору
 
   для: Николай2357   (23.01.2009 в 14:37)
 

Спасибо, получилось:) а чем лучше?

  Ответить  
 
 автор: Николай2357   (23.01.2009 в 17:45)   письмо автору
 
   для: amigo63   (23.01.2009 в 15:03)
 

Это гарантировано работает во всех браузерах. Вообще name предназначено не совсем для обращения к элементам. По этому и лучше.

  Ответить  
 
 автор: Lelik   (23.01.2009 в 19:06)   письмо автору
 
   для: Николай2357   (23.01.2009 в 17:45)
 

я в том, что "Это гарантировано работает во всех браузерах" не уверен... А вот так 100%:

document.forms['my_form'].field.value = 'хуй';

  Ответить  
 
 автор: Николай2357   (24.01.2009 в 00:07)   письмо автору
 
   для: Lelik   (23.01.2009 в 19:06)
 

А если элемент находится не в форме, то Вы получите именно то, что у Вас в value.

  Ответить  
 
 автор: Lelik   (24.01.2009 в 02:17)   письмо автору
 
   для: Николай2357   (24.01.2009 в 00:07)
 

эм... кагбы нет ;) undefined != 'хуй' :)

  Ответить  
 
 автор: Николай2357   (24.01.2009 в 08:37)   письмо автору
 
   для: Lelik   (24.01.2009 в 02:17)
 

Это на усмотрение интерпритатора )))

  Ответить  
 
 автор: mikha   (23.01.2009 в 15:48)   письмо автору
 
   для: amigo63   (23.01.2009 в 13:45)
 

Если уж хочется..
<script type="text/javascript" language="javascript">
function newValue(name_, value_){
    var obj = document.body.getElementsByTagName('input');
    for(var i=0, len = obj.length; i < len; i++){ 
        if(obj[i].name == name_){
            obj[i].value = value_;
        }
    }
}
</script>
<input type="text" name="directory" value="">
<a href="#" onclick="newValue('directory', 'новый value'); return false;">изменить value</a>

UP
document.getElementById('id_чего_там_надо').value='бла бла бла';
document.name_form.name_input.value='бла бла бла';
document.forms[0].directory.value='бла бла бла';// если форма первая по очереди в коде

  Ответить  
 
 автор: amigo63   (23.01.2009 в 23:37)   письмо автору
 
   для: mikha   (23.01.2009 в 15:48)
 

Спасибо, парни! Все толково объяснили)

  Ответить  
 
 автор: amigo63   (24.01.2009 в 12:49)   письмо автору
 
   для: mikha   (23.01.2009 в 15:48)
 

Хмм, лис почему-то не понимает
>document.name_form.name_input.value='бла бла бла';
>document.forms[0].directory.value='бла бла бла';// если форма первая по очереди в коде

и даже
    document.forms[0].elements[0].value=message[3];
    document.forms[0].elements[1].value=message[4];

не понимает... в чем дело..?

  Ответить  
 
 автор: PAT   (24.01.2009 в 13:05)   письмо автору
 
   для: amigo63   (24.01.2009 в 12:49)
 

Всё прекрасно понимает - ошибка в чём-то другом. Может быть, вы обращаетесь к форме ещё ДО ЕЁ ПОЯВЛЕНИЯ на странице?
Вот пример работающего кода:
<html>
<head>
<script>
onload = function f ()
{
var message = new Array ('first', 'second');
document.forms[0].elements[0].value=message[0];
document.forms[0].elements[1].value=message[1]; 
}
</script>
</head>
<body>
<form><input><input></form>
</body>
</html>

А можно и без onload, только скриптовой блок тогда надо размещать обязательно ПОСЛЕ закрывающего тега первой формы:
<html>
<body>
<form><input><input></form>
<script>
var message = new Array ('first', 'second');
document.forms[0].elements[0].value=message[0];
document.forms[0].elements[1].value=message[1]; 
</script>
</body>
</html>

  Ответить  
 
 автор: amigo63   (24.01.2009 в 13:26)   письмо автору
 
   для: PAT   (24.01.2009 в 13:05)
 

Может, из-за таблицы???

<form action="?act=editpages" method="post" enctype="multipart/form-data" name="editform">
<table>
<tr>
<td valign="top">
Имя директории:</td>
<td>
<input type="text" name="directory"></td>
</tr>

<tr>
<td valign="top">
Название игры:</td>
<td>
<input type="text" name="name"></td>
</tr>
...

хотя опера и ИЕ работают прекрасно! и даже подхватывают select-ы

  Ответить  
 
 автор: amigo63   (24.01.2009 в 13:30)   письмо автору
 
   для: PAT   (24.01.2009 в 13:05)
 

Так-то загрузка вообще происходит из responseText в уже загруженую страницу, по вызову пользователя.

  Ответить  
 
 автор: mikha   (24.01.2009 в 13:18)   письмо автору
 
   для: amigo63   (24.01.2009 в 12:49)
 

Ищи где накасячил.
<script type="text/javascript" language="javascript">
function newValue1(){
    document.getElementById('input_id').value='bbb';
}
function newValue2(){
    document.form_name.directory.value='zzz';
}
function newValue3(){
    document.forms[0].directory.value='xxx';
}
function newValue4(){
    document.forms['form_name'].directory.value = 'хуй';
}
function newValue(name_, value_){
    var obj = document.body.getElementsByTagName('input');
    for(var i=0, len = obj.length; i < len; i++){ 
        if(obj[i].name == name_){
            obj[i].value = value_;
        }
    }
}
</script>
<form action="" method="post" name="form_name">
  <input name="directory" type="text" id="input_id" />
</form>
<a href="#" onclick="newValue('directory', 'новый value'); return false;">newValue</a><br />
<a href="#" onclick="newValue1(); return false;">newValue1</a><br />
<a href="#" onclick="newValue2(); return false;">newValue2</a><br />
<a href="#" onclick="newValue3(); return false;">newValue3</a><br />
<a href="#" onclick="newValue4(); return false;">newValue4</a>

Только что проверил в Опере, firefox, MyIE.
Все варианты работают.

  Ответить  
 
 автор: amigo63   (24.01.2009 в 13:33)   письмо автору
 
   для: mikha   (24.01.2009 в 13:18)
 

да, этот код мозилла понимает.
ищу 10 отличий)))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования