|
|
|
| Всем привет! Например, есть элемент
<input type="text" name="directory">
|
где-то видел код, в котором доступ к input-ам происходит напрямую, например:
document.directory.value=message;
|
но у меня так не работает. Реально ли вообще "подцепить" элемент по name? | |
|
|
|
|
|
|
|
для: amigo63
(23.01.2009 в 13:45)
| | Атрибут name используется в формах. Нужно указать имя формы:
document.form_name.directory.value=message;
|
а лучше это делать через id | |
|
|
|
|
|
|
|
для: Николай2357
(23.01.2009 в 14:37)
| | Спасибо, получилось:) а чем лучше? | |
|
|
|
|
|
|
|
для: amigo63
(23.01.2009 в 15:03)
| | Это гарантировано работает во всех браузерах. Вообще name предназначено не совсем для обращения к элементам. По этому и лучше. | |
|
|
|
|
|
|
|
для: Николай2357
(23.01.2009 в 17:45)
| | я в том, что "Это гарантировано работает во всех браузерах" не уверен... А вот так 100%:
document.forms['my_form'].field.value = 'хуй';
|
| |
|
|
|
|
|
|
|
для: Lelik
(23.01.2009 в 19:06)
| | А если элемент находится не в форме, то Вы получите именно то, что у Вас в value. | |
|
|
|
|
|
|
|
для: Николай2357
(24.01.2009 в 00:07)
| | эм... кагбы нет ;) undefined != 'хуй' :) | |
|
|
|
|
|
|
|
для: Lelik
(24.01.2009 в 02:17)
| | Это на усмотрение интерпритатора ))) | |
|
|
|
|
|
|
|
для: 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='бла бла бла';// если форма первая по очереди в коде | |
|
|
|
|
|
|
|
для: mikha
(23.01.2009 в 15:48)
| | Спасибо, парни! Все толково объяснили) | |
|
|
|
|
|
|
|
для: 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];
|
не понимает... в чем дело..? | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: 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-ы | |
|
|
|
|
|
|
|
для: PAT
(24.01.2009 в 13:05)
| | Так-то загрузка вообще происходит из responseText в уже загруженую страницу, по вызову пользователя. | |
|
|
|
|
|
|
|
для: 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.
Все варианты работают. | |
|
|
|
|
|
|
|
для: mikha
(24.01.2009 в 13:18)
| | да, этот код мозилла понимает.
ищу 10 отличий))) | |
|
|
|