Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.02.2012, 12:32
Новичок на форуме
Отправить личное сообщение для Igor_Komarov Посмотреть профиль Найти все сообщения от Igor_Komarov
 
Регистрация: 21.02.2012
Сообщений: 4

Передача переменных
Столкнулся с проблемой, решить которую никак не удаётся. Суть проблемы в следующем

В html вывожу страницу с сообщениями в теле каждого кнопка "Ответить", при клике на которой создаю скриптом div в теле сообщения, кнопка которого сработала. В этом диве как newdiv.innerHTML="<FORM id=\"form\"><DIV class=\"...</div></form>"; вывожу форму отправки сообщения с соответствующей кнопкой.
Так вот, для отправки формы нужен динамический URL и пару изменяемых переменных (к примеру, id родительского сообщения). Но всё что я передаю в скриптовую функцию прорисовки div-а, хоть и выводится при контроле в alert(), при этом не определяется скриптом в html тегах как переменные. Запись вызываемой функции в динамически прорисованом диве выглядит приблизительно так:
newdiv.innerHTML = "<FORM id=\"form\"><textarea cols=\"8\" rows=\"6\" id=\"sender_message\" name=\"sender_message\"></textarea><INPUT value=\"Отправить\" type=\"Button\" name=\"Button\" onclick=\"doit(url,this.form,'mcontent','',use); return false;\"></FORM>";

где url и use передаваемые в функцию переменные (выше отображена только часть функции).
Я понимаю что в указаной прорисовке переменные видятся скриптом как текст, но все мои попытки изменить ситуацию пока что безрезультатны.
Ответить с цитированием
  #2 (permalink)  
Старый 21.02.2012, 12:36
Новичок на форуме
Отправить личное сообщение для Igor_Komarov Посмотреть профиль Найти все сообщения от Igor_Komarov
 
Регистрация: 21.02.2012
Сообщений: 4

на всякий случай приведу тело функции целиком:
function creatediv(target,url,use) {
alert(url);
alert(use);
	var div = document.getElementById('newmsg');
	if (div != null) {
		div.parentNode.removeChild(div);
	}
	var newdiv = document.createElement('div');
	newdiv.setAttribute('id', 'newmsg');
	newdiv.setAttribute('display', 'block');
	newdiv.style.position = "relative";
	newdiv.style.margin = "20px";
	newdiv.innerHTML = "<FORM id=\"form\"><DIV class=\"fm-req\"><LABEL for=\"sender_subject\">Заголовок:</LABEL> <INPUT id=\"sender_subject\" type=\"text\" name=\"sender_subject\" size=\"32\" maxlength=\"32\"> </DIV><DIV class=\"fm-req\"><br> <textarea cols=\"8\" rows=\"6\" id=\"sender_message\" name=\"sender_message\"></textarea></DIV><DIV class=\"fm-submit fm-req\"><INPUT value=\"Отправить\" type=\"Button\" name=\"Button\" onclick=\"doit(url,this.form,'mcontent','',use); return false;\"></DIV></FORM>";
	document.getElementById(target).appendChild(newdiv);
}

Из того что я говорил выше, алерты выводят указаные переменные, но вот функции doit они не видны (это и понятно, они видятся ей простой строкой).
Ответить с цитированием
  #3 (permalink)  
Старый 21.02.2012, 13:48
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

newdiv.innerHTML = "<FORM id=\"form\"><DIV class=\"fm-req\"><LABEL for=\"sender_subject\">Заголовок:</LABEL> <INPUT id=\"sender_subject\" type=\"text\" name=\"sender_subject\" size=\"32\" maxlength=\"32\"> </DIV><DIV class=\"fm-req\"><br> <textarea cols=\"8\" rows=\"6\" id=\"sender_message\" name=\"sender_message\"></textarea></DIV><DIV class=\"fm-submit fm-req\"><INPUT value=\"Отправить\" type=\"Button\" name=\"Button\" onclick=\"doit("+url+",this.form,'mcontent','',"+use+"); return false;\"></DIV></FORM>";
Ответить с цитированием
  #4 (permalink)  
Старый 21.02.2012, 14:06
Новичок на форуме
Отправить личное сообщение для Igor_Komarov Посмотреть профиль Найти все сообщения от Igor_Komarov
 
Регистрация: 21.02.2012
Сообщений: 4

Пробовал так, в дэбаггере выдаёт ошибку кода и скрипт не запускается вовсе.
Ответить с цитированием
  #5 (permalink)  
Старый 22.02.2012, 00:40
Новичок на форуме
Отправить личное сообщение для Igor_Komarov Посмотреть профиль Найти все сообщения от Igor_Komarov
 
Регистрация: 21.02.2012
Сообщений: 4

Проблема крылась в тривиальных вещах...
Скрипт в финале требовал оформления переменной как текстовой, т.е. верная её вставка '"+url+"' (дополнительные кавычки). Кроме этого, подгрузка изображения индикации загрузки в место изменяемого слоя, на время асинхронного получения данных (переменная use) оказалась капризной к кавычкам любого рода. Поэтому пришлось все их выбросить, где то так
use="<div align=center><img src=images/loading.gif border=0 /></div>";

Эти манипуляции позволили запустить сценарий.
Спасибо за помощь.
Ответить с цитированием
  #6 (permalink)  
Старый 22.02.2012, 12:04
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Ну вот! Прокачались Поздравления!
Ответить с цитированием
  #7 (permalink)  
Старый 22.02.2012, 12:06
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Кавычки все же лучше обработать например escape'ом
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача переменных Лесной_Белк Общие вопросы Javascript 11 09.08.2018 16:06
Значение переменных из JavaScript в PHP pr43unknown Общие вопросы Javascript 3 18.01.2012 18:37
Нужно узнать какая из трех переменных больше! shureg Общие вопросы Javascript 2 24.08.2011 11:05
Передача и сохранение данных в фаил RX200 Общие вопросы Javascript 7 28.02.2009 14:00
Передача переменных между файлами Dekker8 Events/DOM/Window 1 22.09.2008 01:53