powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Динамически создаваемые строки
7 сообщений из 7, страница 1 из 1
Динамически создаваемые строки
    #35370826
DTri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суточек!

Совершенствую админку,
нужна помощь, как сделать чтобы при выборе в Type[] в <DIV id='ConstValueEditor[]'></DIV> соответствующей строки вставлялся код или <INPUT 'Text'> при Type[].value=1 или <textarea> при Type[].value=2.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<table border='0' cellspacing='1' cellpadding='1' width='100%' align='center'>
  <tr>
    <th width= 250 >Имя</th>
    <th width= 100 >Тип</th>
    <th>Значение</th>
    <th width= 60 ></th>
  </tr>
.......
  <tr>
    <td><input name='Name[]' type='text' style='width:100%' value='".$row['Name']."'></td>
    <td>
      <select name='Type[]'>
        <option value= 0  selected>...</option>
        <option value= 1 >Строка</option>
        <option value= 2 >Текст</option>
      </select>
    </td>
    <td><DIV id='ConstValueEditor[]'></DIV></td>
    <td align='center'>
      <input type='button' name=drop[] value=' − ' onclick='delrow(this);'>
      <input type='button' name=plus[] value=' + ' onclick='addrow(this);'>
    </td>
.......
Вот скриптик который добавляет новую строку:

  function addrow(btn){
    if(document.getElementById){
      tr = btn;
      while (tr.tagName != 'TR') tr = tr.parentNode;
      var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
      thisChilds = newTr.getElementsByTagName('td');
      var coll = newTr.getElementsByTagName( "input" );
      for( var i =  0 ; i < coll.length; i ++ ){
        coll[i].value = "";
      }
    }
  }

Я весь код выборки из базы не пишу, часть между ....... повторяется n раз.
Скриптик добавления удаления работает, Надеюсь мои объяснения в 7 утра понятны :)
...
Рейтинг: 0 / 0
Динамически создаваемые строки
    #35370908
shiftee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ставишь сабытие на onCange

Код: plaintext
1.
2.
3.
4.
if (docement.getElementByName('Type').value==значение) {
     par = document.createElement('че создать хочешь');
     par.параметр = 'какой параметр нужен';
     document.getElementById('Куды сунуть хочешь').appendChild('par');
}

Вот как-то так... тока подогнать надо под твое решение.
...
Рейтинг: 0 / 0
Динамически создаваемые строки
    #35371018
DTri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос остается, в какой из строк всетаки сработал элемент из массива объекта Type[] и как сопоставить соотетствующий объектиз Type[] с элементом <DIV> этой же строки
...
Рейтинг: 0 / 0
Динамически создаваемые строки
    #35371105
DTri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если упрастить, то

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<tr>
    <td>
      <select name='Type[]'>
        <option value= 0  selected>...</option>
        <option value= 1 >Строка</option>
        <option value= 2 >Текст</option>
      </select>
    </td>
    <td><input name='Name[]' type='text' style='width:100%' value=''></td>
    <td align='center'>
      <input type='button' name=drop[] value=' − ' onclick='delrow(this);'>
      <input type='button' name=plus[] value=' + ' onclick='addrow(this);'>
    </td>
</tr>

как в соответствующим поле Name[] вывести значение Type[], очень нужно , мне главное понять принцип, а там разберусть.

Вот привожу рабочий код
...
Рейтинг: 0 / 0
Динамически создаваемые строки
    #35371170
Vint_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <script type="text/javascript">
    
    function getNumElement(btn)
    {
        if(!document.forms[ 0 ].plus.length) return;
        for(i =  0 ; i<document.forms[ 0 ].plus.length;i++)
            if(document.forms[ 0 ].plus[i] == btn)
                return i;
        return;
    }
    
    function addrow(btn){
    if(document.getElementById){
      tr = btn;
      while (tr.tagName != 'TR') tr = tr.parentNode;
      var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
      thisChilds = newTr.getElementsByTagName('td');
      var coll = newTr.getElementsByTagName( "input" );
      for( var i =  0 ; i < coll.length; i ++ ){
        coll[i].value = "";
      }
      
      alert("НОмер моего объекта: "+getNumElement(btn));
    }
  }
    </script>
</head>
<body>
<form action="./">
<table border='0' cellspacing='1' cellpadding='1' width='100%' align='center'>
  <tr>
    <th width= 250 >Имя</th>
    <th width= 100 >Тип</th>
    <th>Значение</th>
    <th width= 60 ></th>
  </tr>

  <tr>
    <td><input name='Name' type='text' style='width:100%' value='__'></td>
    <td>
      <select name='Type'>
        <option value= 0  selected>...</option>
        <option value= 1 >Строка</option>
        <option value= 2 >Текст</option>
      </select>
    </td>
    <td><DIV id='ConstValueEditor'></DIV></td>
    <td align='center'>
      <input type='button' name=drop value=" − " onclick='delrow(this);'>
      <input type='button' name=plus value=" + " onclick='addrow(this);'>
    </td>
    </tr>
    
  
    </table>
</form>
</body>
</html>

...
Рейтинг: 0 / 0
Динамически создаваемые строки
    #35371178
shiftee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.php.su/functions/?cat=dom

И не надо выходить за пределы php. Ибо, если мне ничего не изменяет, 'Name[]' воспринимается как имя массива Name только в пхп, а для яваскрипта при обращении к нему получится ошибочка. Соответственно, используя пхп класс ДОМ, можно сильно облегчить себе жизнь.
...
Рейтинг: 0 / 0
Динамически создаваемые строки
    #35371855
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shifteeИбо, если мне ничего не изменяет, 'Name[]' воспринимается как имя массива Name только в пхп, а для яваскрипта при обращении к нему получится ошибочка.
если Вам кажется, что Вам что-то изменяет , то нужно пойти и проверить, а не вводить в заблуждение других людей. Яваскрипту фиолетово на [] в имени, т.к. для него это всего лишь текст, а не объект.

DTriкак в соответствующим поле Name[] вывести значение Type[], очень нужно

не совсем понятно, какой Name[] должен соответствовать какому Type[], но примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function addrow(btn){
	tr = btn;
	while (tr.tagName != 'TR') tr = tr.parentNode;
	var newInput;
	switch (tr.getElementsByTagName("select")[ 0 ].value)
	{
		case '1':
			newInput = document.createElement('input');	
			newInput.type = 'text';
			newInput.name = "Name[]";
			newInput.style.width = "100%";
			break;
		case '2':
			newInput = document.createElement('textarea');
			newInput.rows =  5 ;
			newInput.name = "Name[]";
			newInput.style.width = "100%";
	}
	var newTr = tr.parentNode.appendChild(tr.cloneNode(true));
	newTr.cells[ 1 ].innerHTML = '';
	if (newInput) newTr.cells[ 1 ].appendChild(newInput);
	checkForLast();
}
здесь берется Type из той строки, в которой было нажато "+", и в зависимости от него вставляется элемент в новую строку.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Динамически создаваемые строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]