Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Создание блока div с содержимым по нажатию кнопки (https://javascript.ru/forum/events/41455-sozdanie-bloka-div-s-soderzhimym-po-nazhatiyu-knopki.html)

Batyabest 14.09.2013 22:14

Создание блока div с содержимым по нажатию кнопки
 
Здравствуйте.
Помогите пожалуйста решить такую проблему.
Мне нужно создать тест для учеников.
И нужно сделать чтобы по нажатию на кнопку добавлялся еще один вопрос и т.д.
Мне кажется можно создать весь блок div с наполнением по нажатию кнопки "Добавить вопрос"?
<div>
 <div><strong>Вопрос №</strong></div>
 <div><select><option>1</option><option>2</option><option>3</option></select></div>
 <div><a href="#" onclick="addQuestion()">Добавить вопрос</div>
</div>

var num;
num = 1;
	function addQuestion() {
		var newdiv = document.createElement("div");
		newdiv.innerHTML = "<div id='original-wrapper'>\n<div  class='form-1'>\n<form id='question' method='post'>\n<div><strong>Вопрос №[ + num++]</strong></div>\n<div style='float:left'><strong>Тип вопроса&nbsp;</strong></div>\n<div><select>\n<option>С вариантами ответа</option>\n<option>На сопоставление</option>\n<option>С полем ввода ответа</option>\n</select>\n</div>\n<div><strong>Описание вопроса</strong></div></form></div></div>";
		 newdiv.appendTo('div#quest');
		 document.getElementById("parentId").appendChild(div);
		 return false;
}


Где я делаю не так?

рони 16.09.2013 01:17

Batyabest,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
  <div>
    <div>
      <strong>Вопрос №</strong>
    </div>

    <div>
      <select>
        <option>
          1
        </option>

        <option>
          2
        </option>

        <option>
          3
        </option>
      </select>
    </div>

    <div>
      <a href="#" onclick="addQuestion()">Добавить вопрос</a>
    </div>
  </div>

  <div id="parentId"></div><script>
var num = 1;

    function addQuestion() {
        var newdiv = document.createElement("div");
        newdiv.innerHTML = "<div id='original-wrapper'>\n<div  class='form-1'>\n<form id='question' method='post'>\n<div><strong>Вопрос №[ "+ num++ +"]<\/strong><\/div>\n<div style='float:left'><strong>Тип вопроса&nbsp;<\/strong><\/div>\n<div><select>\n<option>С вариантами ответа<\/option>\n<option>На сопоставление<\/option>\n<option>С полем ввода ответа<\/option>\n<\/select>\n<\/div>\n<div><strong>Описание вопроса<\/strong><\/div><\/form><\/div><\/div>";
         //newdiv.appendTo('div#quest');
         document.getElementById("parentId").appendChild(newdiv);
         return false;
  }

  </script>
</body>
</html>

Batyabest 16.09.2013 12:20

рони,
А что именно Вы изменили, где я сделал ошибку?

И еще.
Как мне в блок, который создается с помощью javascript добавить блок с php кодом?
<div><?php $inCore->insertEditor('description', $mod['description'], '200', '100%'); ?></div>

рони 16.09.2013 13:27

Цитата:

Сообщение от Batyabest
А что именно Вы изменили, где я сделал ошибку?

Цитата:

Сообщение от рони
[ "+ num++ +"]<

Цитата:

Сообщение от рони
appendChild(newdiv);

с php пас.

Batyabest 19.09.2013 18:11

Цитата:

Сообщение от рони (Сообщение 272424)
с php пас.

А такое в принципе реально? Или нет?

рони 19.09.2013 18:33

Batyabest,:-?

ksa 19.09.2013 22:25

Цитата:

Сообщение от Batyabest
Как мне в блок, который создается с помощью javascript добавить блок с php кодом?

JS может делать динамическое содержимое на клиенте, а серверный скрипт может делать динамику только на момент формирования страницы.

P.S.
Я с ПХП не работаю...

Batyabest 24.09.2013 18:35

А как тогда реализовать всю эту задачу, что в самом начале темы, с помощью php?

ksa 25.09.2013 10:40

Цитата:

Сообщение от Batyabest
А как тогда реализовать всю эту задачу, что в самом начале темы, с помощью php?

Цитата:

Сообщение от Batyabest
нужно сделать чтобы по нажатию на кнопку добавлялся еще один вопрос и т.д.

Как вариант...
- отправлять ajax запрос на сервер типа "дай новый вопрос"
- получив ответ, показать его на странице

Если ajax не по зубам:
1. При получении ответа на очередной вопрос, просто перезагружать страницу, но уже с новым вопросом
2.
- сразу делать страницу со всеми вопросами
- скрывать все вопросы кроме текущего
- при ответе скрывать текущий, показывать следующий

windin 25.09.2013 12:09

Если полная перезагрузка не устраивает попробуйте на крайний случай стары добрые фреймы))) Перезагрузка страницы будет почти незаметна.


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