Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Найти элемент ниже скрипта (https://javascript.ru/forum/css-html/14305-najjti-ehlement-nizhe-skripta.html)

Vladislav_V 11.01.2011 01:29

Найти элемент ниже скрипта
 
Здравствуйте!

Такой вопрос по javascript.

Есть html страница структура и хронология такая:
-----------------------
(Код javascript)

Кнопка "Расчитать"

(поля с информацией)
-----------------------

После того как нажимается кнопка "расчитать" скрипт пытается
получить доступ к полям с информацией через GetElementById, и не находит их потому что они ниже скрипта располагаются. Т.е. если поля в документе расположить выше скрипта все будет работать.

Вопрос как можно найти эти элементы не меняя структуру?

Спасибо.

ksa 11.01.2011 09:10

Vladislav_V, такки все работает...

<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>
<body>
<script>
function Get() {
	alert(document.getElementById('test').value)
}
</script>
<form>
<input type='button' value='Get' onclick='Get()' />
<hr />
<input type='text' id='test' value='1234' />
</form>
</body>
</html>

Цитата:

Сообщение от Vladislav_V
получить доступ к полям с информацией через GetElementById

Может все дело в этом? ;)

Vladislav_V 11.01.2011 17:51

ksa, спасибо. Так действительно работает, когда вызов идет по нажатию клавиши Get. Но у меня вместо кнопки с Get стоит просто вызов функции:

<script>
Get();
</script>

И вот тогда не работает. По большому счету конечно омжно решить клавишей но хотелось бы узнать можно ли как то найти элемент если скрипт выполнился когда вся страница еще не прогрузилась?

2. и еще один вопрос:

После того как я дополняю input, своим значением:

document.getElementById('test').value += "+20"

Оно действительно добавляется(но кратковременно) и тут же исчезает,
как только скрипт отработал. И в поле ввода остается тоько то что вписал пользователь. А нужно что бы оставалось то что вписал например "100" и получилось бы: "100+20".
Именно что бы это было видно в input.

ksa 11.01.2011 20:43

Vladislav_V, если элемента в ДОМ еще нет - скрипт бесполезен.
Цитата:

Сообщение от Vladislav_V
После того как я дополняю input, своим значением:

document.getElementById('test').value += "+20"


Оно действительно добавляется(но кратковременно) и тут же исчезает,

Пора и тебе делать тестовые примеры... :D

Vladislav_V 12.01.2011 01:03

Цитата:

Сообщение от ksa (Сообщение 87467)
Vladislav_V, если элемента в ДОМ еще нет - скрипт бесполезен.

Пора и тебе делать тестовые примеры... :D

Конечно, сорри.


function test() {
var v = document.getElementById('f1');
v.value += '+20';
alert(document.getElementById('f1').value);
}

<form onsubmit="javascript:test();">
<input type='submit' value='calc' />
<textarea id="f1">100</textarea>
</form>


Вот собственно, нажимаю Calc текстовая ареа дополняется текстом +20
о чем говорит алерт и далее после сообщение снова меняется на 100.

рони 12.01.2011 01:24

Vladislav_V,
по onsubmit идёт обработка данных перед отправкой формы -- отправку данных формы вы не прерываите - они уходят - в данном случае в никуда - страница обновляеться и данные формы становяться по умолчанию -- чтобы прервать отправку формы - добавьте - return false-пример ниже
<script type="text/javascript">
function test() {
var v = document.getElementById('f1');
v.value += '+20';
alert(document.getElementById('f1').value);
}
</script>
<form onsubmit="javascript:test();return false">
<input type='submit' value='calc' />
<textarea id="f1">100</textarea>
</form>

Vladislav_V 12.01.2011 01:35

Цитата:

Сообщение от рони (Сообщение 87548)
Vladislav_V,
по onsubmit идёт обработка данных перед отправкой формы -- отправку данных формы вы не прерываите - они уходят - в данном случае в </form>[/html]

Понял. Но мне то и нужно что бы поля отправились дополненые нужными мне расчетами. Можно ли как то после прерывания продолжить?
Т.е. прервать отправку и затем другим скриптом автоматически продолжить?

рони 12.01.2011 01:58

Vladislav_V,
Так данные формы и отправились дополненными!!! В Вашем прежнем варианте.

ksa 12.01.2011 08:47

Vladislav_V, вроде же все объяснили уже...
Цитата:

Сообщение от рони
страница обновляеться и данные формы становяться по умолчанию

Мудрить не нужно - пора подключать серверный язык и вычитывать данные из реквеста.
Пример на csp

<textarea id="f1" name='test'>#($g(%reqest.Data("test",1)))#</textarea>


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