Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по js+form (переменные) (https://javascript.ru/forum/misc/4769-vopros-po-js-form-peremennye.html)

Georgiy 19.08.2009 11:01

Вопрос по js+form (переменные)
 
Я вообще не знаю js, так что извините если вопрос совсем ламмерский.

Скачал один скринт - форму на js, где есть такая переменная <span id="title"></span> - отображает заголовок формы, в низу есть сама форма, и мне нужно заголовок этой формы передать как переменную типа:

<input name="title" type="hidden" value="title" size=30> вот в этом и проблема. Что писать в value=""? Ясно что не value="<span id='title'></span>" :) Подскажите пожалуйста как преобразовать эту переменную чтобы она встала в value нормально.

twolf 19.08.2009 11:11

http://javascript.ru/tutorial/dom/search#poisk-po-id

Georgiy 19.08.2009 11:19

twolf, спасибо! Мне на это на одном форуме ответили: "DOM Не работает, пока не загрузится все html дерево, поэтому на страницу нужно вешать обработчик, который после загрузки вставляет текст в форму. "
Что сие означает я не понял, но собственно на этом все и закончилось...
я говорю что в js ничего не понимаю, поэтому если не сложно, объясните где именно ошибка. Мне подсказывали примерно так:

<html>

<script type="text/javascript">
window.onload = (function () {

return function () {
document.getElementById('myform').value = document.getElementById('title').innerHTML;
}

})()
</script>

<body>
<span id="title">mytitle</span>
<input type="text" id="myform">

я не понял, почему у <input type="text" id="myform"> нет name="title"?? Ведь именно задача в том, чтобы передать переменную из <span id="title">mytitle</span> чрез <input type="hidden" name="title" id="myform">

Georgiy 19.08.2009 11:20

и соответсвенно пример выше не сработал :(

twolf 19.08.2009 11:37

window.onload = function () {
document.getElementById('myform').value = document.getElementById('title').innerHTML;
}

Так сработает. Если id у Вас уникальные (они должны быть уникальными).
Name не требуется, т.к. мы ищем элемент по id. Можно искать и по name.

Georgiy 19.08.2009 11:58

Цитата:

Сообщение от twolf (Сообщение 27589)
window.onload = function () {
document.getElementById('myform').value = document.getElementById('title').innerHTML;
}

Так сработает. Если id у Вас уникальные (они должны быть уникальными).
Name не требуется, т.к. мы ищем элемент по id. Можно искать и по name.

Далее форма должна отправить эту переменную в php. Сделал всё так как вы написали - id myform уникальная. Прописал в пхп конечно echo $myform; в итоге пусто - не схватилась переменная :(

twolf 19.08.2009 12:05

ну вы не сказали как отправляете данные, если простым сабмит, то да, в input поставьте name и ловите $_POST['title'] или $_GET['title']

Georgiy 19.08.2009 12:32

хм. так странно.. переменная оказывается пустой всё равно. <span id="title"></span> при открытии в обычном html высвечивает переменную, но window.onload = function () {
document.getElementById('myform').value = document.getElementById('title').innerHTML; -здесь она как бы уже пустая. Я попробовал сунуть сюда другую переменную - из <div id="formbox" align="center">, т.е. formbox - переменная заработала при передачи, а которая из <span id="title"></span> не хочет..

twolf 19.08.2009 13:33

document.getElementById('title').innerHTML Вам показывает что между тегами <span id="title"></span>.

Georgiy 19.08.2009 13:39

<span id="title"></span> - получается так что не показывает. При этом при распечатке <span id="title"></span> переменная есть!
Что это может быть?

Georgiy 19.08.2009 13:40

если вобъю другую переменную в document.getElementById('любая другая переменная').innerHTML - всё отображает, а <span id="title"></span> нет

twolf 19.08.2009 13:43

мда... Вы читали мой предыдущий пост?
Если у вас теге ничего не написано, значит и переменная будет пустая.

Georgiy 19.08.2009 14:09

Да, так работает. Только дело в том, что между тегами <span id="title"></span> ничего нет, и по идеи скрипта быть ничего не должно. Даже если что-то поставим, он всё равно отобразит другую переменную, которая в ней уже есть.
Как работает скрипт.

<a class="but" title="Заказать $good.title" href="#=1" onClick="openbox('$good.title', 1)">Заказать</a> При нажатии на эту ссылку, открывается js окно с формой, где ввеху этого окна название товара $good.title, которая в самой форме передаётся как <span id="title"></span> (внутри тега <span id="title"></span> ничего нет, но передаёт то что было кликнуто по ссылке - $good.title)

Стоп.. только стал понимать.. перед спаном есть ещё одна строчка...
<div id="box" align="center"> а потом за ним слудует <span id="ordertitle"></span>,
т.е.

<div id="box" align="center">
<span id="title"></span> - как заголовок
...а потом идёт сама форма....

Походу всё это идёт одной переменной, а в заблуждение ввело то, что <span id="title"></span> имеет свою переменную, хотя просто стоит как какой-то идентификатор и просто привязывает свою строчку к классу в css как заголовок...

Блин, а вырвать именно то что записано в ссылке как openbox можно как-то отдельно? Пробовал подставлять эту переменную в ваш пример - ничего не вышло.

Georgiy 19.08.2009 15:17

Извините что сразу не сказал, сам не заметил. в Js я 0.

twolf 20.08.2009 10:41

я посоветую Вам почитать книги: JavaScript. Библия пользователя и javascript: Подробное руководство (Definitive Guide). Вторая поновее да и написана лучше, но с нулевым знанием js будет сложновато, т.к. расчитана на людей кто уже работал с ним. У Гудмана всё гораздо подробнее, но встречаются моменты, которые в js уже не используеются (document.write).

Kolyaj 20.08.2009 10:48

Цитата:

Сообщение от twolf
которые в js уже не используеются (document.write).

Используется, когда нужно.

Georgiy 20.08.2009 11:41

Спасибо за совет. Не июмею наглости спрашивать что-то ещё.

Georgiy 20.08.2009 13:14

Подскажите, а может мне кто-нибудь помочь за плату? Скрипт хотелось бы отремонтировать срочно, а на сайте разработчика не нашёл даже форума, и по суппорту молчат. Там делов для разбирающегося на полчаса, если не меньше. А скрипт хороший, только *ука не передаёт жизненно важную переменную.

Gvozd 20.08.2009 14:41

помогу за симфолическую плату
аська в профайле


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