Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание массива из строк переменной 
V
    Опции темы
bars80080
Дата 10.2.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



ну вот смотри, далее выдержки из моих скриптов

есть блок который я клонирую:
Код

<tbody id="tabFormU0" class="tabFormU">
<tr><td class="col1">Срок</td><td class="col2"><select name="fUn[]"><option></option></select></td></tr>
<tr><td class="col1">Процент завершения</td><td class="col2"><input type="text" name="fproc[]" value="20" class="txt" /></td></tr>
<tr><td class="cornerLB">Состояние задачи</td><td class="cornerRB"><select name="fcond[]" >
<option value="0" >Не начата</option></select>

<div class="regElem"><input type="button" onclick="TFdelUser(this);" title="удалить" value=" " class="trash" /></div></td></tr>
</tbody>

по нажатию стоящей в стороне кнопки:
<input type="button" onclick="TFaddUser();" value="добавить" class="but" />

Код

function TFaddUser() {
    // само клонирование
    var t = document.getElementById('tabForm');
    var numUEl = document.getElementById('idfnumUser');
    var numU = numUEl.value;
    var allTB = t.getElementsByTagName('tbody');
    var allTBl = allTB.length;
    var oldTB = allTB[allTBl - 2];
    var newTB = oldTB.cloneNode(true);
    var lasTB = allTB[allTBl - 1];
    newTB.id = 'tabFormU' + numU;
    t.insertBefore(newTB, lasTB);

    // здесь занимаемся дублированием значений из старого нода в новый
    var oldEs = oldTB.getElementsByTagName('select');
    var oldEl = oldEs.length;
    var newEs = newTB.getElementsByTagName('select');
    for(var i = 0; i < oldEl; i++) {
        newEs[i].selectedIndex = oldEs[i].selectedIndex;
    } 
    
    // обновляем количество пунктов
    numU++;
    numUEl.value = numU;
}

где <input type="hidden" name="fnumUser" value="2" id="idfnumUser" /> - поле в котором я храню количество существующих пунктов
t - таблица
в блоке есть кнопка удалить TFdelUser(this);
Код

function TFdelUser(x) {
    x.parentNode.parentNode.parentNode.parentNode.removeNode(true);
    var numUEl = document.getElementById('idfnumUser');
    var numU = numUEl.value;
    numU--;
    numUEl.value = numU;
}

удаление и уменьшение количества пунктов

примерно так

п.с. да, для файерфокса и оперы (за что я их не люблю) приходится вешать в начало скрипта:

Код

if(!window.ActiveXObject) {
    HTMLElement.prototype.removeNode = function(removeChildren) {
        if(Boolean(removeChildren)) { return this.parentNode.removeChild(this); }
        else {
            var r = document.createRange();
            r.selectNodeContents(this);
            return this.parentNode.replaceChild(r.extractContents(),this);
        }
    }
}
так как эти субчики не имеют метода removeNode
PM MAIL WWW   Вверх
NNaarreekk
Дата 10.2.2009, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 2
Всего: 3



bars80080, спасибо, то что нужно!
Правда пока настроил похудел! smile 

Вот полностью настроенная версия:
Код

<html>
<head>
<script  type='text/javascript'>
function TFaddUser() {
    // само клонирование
    var t = document.getElementById('tabForm');
    var numUEl = document.getElementById('idfnumUser');
    var numU = numUEl.value;
    var allTB = t.getElementsByTagName('tbody');
    var allTBl = allTB.length;
    var oldTB = allTB[allTBl - 1];
    var newTB = oldTB.cloneNode(true);
    var lasTB = allTB[allTBl - 1];
    newTB.id = 'tabFormU' + numU;
    t.insertBefore(newTB, lasTB);
    // здесь занимаемся дублированием значений из старого нода в новый
    var oldEs = oldTB.getElementsByTagName('select');
    var oldEl = oldEs.length;
    var newEs = newTB.getElementsByTagName('select');
    for(var i = 0; i < oldEl; i++) {
        newEs[i].selectedIndex = oldEs[i].selectedIndex;
    } 
    
    // обновляем количество пунктов
    numU++;
    numUEl.value = numU;
}
function TFdelUser(x) {
    x.parentNode.parentNode.parentNode.parentNode.removeNode(true);
    var numUEl = document.getElementById('idfnumUser');
    var numU = numUEl.value;
    numU--;
    numUEl.value = numU;
}
if(!window.ActiveXObject) {
    HTMLElement.prototype.removeNode = function(removeChildren) {
        if(Boolean(removeChildren)) { return this.parentNode.removeChild(this); }
        else {
            var r = document.createRange();
            r.selectNodeContents(this);
            return this.parentNode.replaceChild(r.extractContents(),this);
        }
    }
}
</script>
</head>
<body>
<input type="button" onclick="TFaddUser();" value="добавить" class="but" />
<input type="hidden" name="fnumUser" value="2" id="idfnumUser" />
<table id='tabForm'>
<tbody id="tabFormU0" class="tabFormU">
<tr><td class="col1">Срок</td><td class="col2"><select name="fUn[]"><option></option></select></td></tr>
<tr><td class="col1">Процент завершения</td><td class="col2"><input type="text" name="fproc[]" value="20" class="txt" /></td></tr>
<tr><td class="cornerLB">Состояние задачи</td><td class="cornerRB"><select name="fcond[]" >
<option value="0" >Не начата</option></select>
<div class="regElem"><input type="button" onclick="TFdelUser(this);" title="удалить" value=" " class="trash" /></div></td></tr>
</tbody>
</table>
</body>
</html>


Все, тему закрою!
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0627 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.