Показать сообщение отдельно
  #1 (permalink)  
Старый 04.04.2012, 11:10
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Нужно доработать скрипт
Стоимость работы 500 рублей, оплата в WMR.

Есть два скрипта (примеры ниже) оба делают одно и то же, но по-разному. Необходимо их "скрестить", взяв нужные функции.

Первый скрипт:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">

var clone;

function cloneRow(){
var rows=document.getElementById('mytab').getElementsByTagName('tr');
var index=rows.length;
clone=rows[index-1].cloneNode(true);
var inputs=clone.getElementsByTagName('input'), inp, i=0 ;
while(inp=inputs[i++]){
inp.name=inp.name.replace(/\d/g,'')+(index+1);
}

}

function addRow(){
var tbo=document.getElementById('mytab').getElementsByTagName('tbody')[0];
tbo.appendChild(clone);
cloneRow();
}

onload=cloneRow;
</script>
</head>

<body>
<form>

<p><input type="button" value="Add a new row" onclick="addRow()"></p>

<table border="1" id="mytab">
<tr>
<th>Field 1</th>
<th>Field 2</th>
<th>Field 3</th>
</tr>

<tr>
<td><input type="text" size="10" name="field1" value="" /></td>
<td><input type="text" size="10" name="field2" value="" /></td>
<td><input type="text" size="10" name="field3" value="" /></td>
</tr>
</table>

</form>
</body>
</html>


Второй скрипт:
<HTML>
<HEAD>
    <TITLE> Add/Remove dynamic rows in HTML table </TITLE>
    <SCRIPT language="javascript">

        function addRow(tableID) {
             var table = document.getElementById(tableID);
             var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);
             var cell1 = row.insertCell(0);
            var element1 = document.createElement("input");
            element1.type = "checkbox";
            cell1.appendChild(element1);
             var cell2 = row.insertCell(1);
            cell2.innerHTML = rowCount + 1;
             var cell3 = row.insertCell(2);
            var element2 = document.createElement("input");
            element2.type = "text";
            cell3.appendChild(element2);
         }

         function deleteRow(tableID) {
            try {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;
             for(var i=0; i<rowCount; i++) {
                var row = table.rows[i];
                var chkbox = row.cells[0].childNodes[0];
                if(null != chkbox && true == chkbox.checked) {
                    table.deleteRow(i);
                    rowCount--;
                    i--;
                }
             }
            }catch(e) {
                alert(e);
            }
        }
     </SCRIPT>
</HEAD>
<BODY>
     <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />
     <INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />
     <table id="dataTable" border="1">
        <tr>
            <TD><INPUT type="checkbox" name="chk"/></TD>
            <TD> 0 </TD>
            <TD> <INPUT type="text" /> </TD>

        </tr>
    </TABLE>
 </BODY></HTML>


Необходимо доработать первый скрипт и добавить к нему функционал второго.

1. Сейчас первый скрипт обрабатывает только поля "input", но не обрабатывает поля "select". Необходимо, чтобы скрипт клонировал все возможные типы полей. Именно клонировал, чтобы в случае добавления каких-то новых полей в таблицу не было необходимости переписывать javascript.

2. Сейчас первый скрипт изменяет имена полей input на другие, необходимо, чтобы имена полей добавлялись такие же, как у родительского элемента.

3. Добавить функцию удаления отмеченной флажком строки как во втором скрипте. Первый флажок - служебный и будет использоваться только javacript'ом для удаления "лишних" строк.

4. Счётчик строк (как во втором скрипте) должен быть внутри одного из полей "input" и начинаться с нуля. Соответственно изменяться по-порядку в зависимости от добавления/удаления строк.

Сделать всё это нужно как можно быстрее.

Пишите в личку, после подтверждения заказ будет забронирован за вами.

Преимущество тем, кто уже выполнял мои заказы.
Ответить с цитированием