| Цитата(Irokez @ 25.5.2005, 12:48) | | неа, ID передаются разные, но в сама функция получает 'undefined' |
Смотрел не дома, времени запустить не было. Ошибка не только в глобальной tels_id, но и в вызове функции. Метод call принимает первым аргументов ссылку на обьект, в контексте которого исполняется вызываемая функция. Попробуй так:
| Код | <html> <head> <title>*</title> <script language="JavaScript" type="text/javascript"> var last_id = 0; function addTel(div_id) { var div = document.createElement('div'); var space = document.createTextNode(' '); div.appendChild(space); var inp_num = document.createElement('input'); inp_num.name = 'tel[]'; inp_num.className = 'input-text-short'; div.appendChild(inp_num); div.appendChild(space); var btn = document.createElement('input'); btn.type = 'button'; btn.value = 'Rem tel'; btn.onclick = function() { var div = this.parentNode; div.parentNode.removeChild(div); } div.appendChild(btn); document.getElementById(div_id).appendChild(div); } function sayHi() { alert('hi'); } function addMan() { last_id ++; var div = document.createElement('div'); div.id = 'man_' + (last_id); var btn = document.createElement('input'); btn.type = 'button'; btn.value = 'Add tel'; var tels_id = 'tel_' + last_id; btn.onclick = function() {addTel.call(btn, tels_id);}; //проблема тут, addTel не получает параметр div.appendChild(btn); var space = document.createTextNode(' '); div.appendChild(space); var inp_name = document.createElement('input'); inp_name.className = 'input-text-long'; div.appendChild(inp_name); var div_tels = document.createElement('div'); div_tels.id = 'tel_' + (last_id); div.appendChild(div_tels); document.getElementById('test').appendChild(div); } </script> </head> <body> <input type="button" onClick="addMan()" value="Add man"> <div id="test"> <div id="man_0"> <!-- эта кнопка работает, а последующие добавленные - нет --> <input type="button" onClick="addTel('tel_0')" value = "Add tel"> <input type="text" class="input-text-long"> <div id="tel_0"></div> </div> </div> </body> </html> |
Убери var перед tels_id, сравни разницу. Если не понял, то читай статью о вложенных функциях(закреплённый топ).
Ну и предупреждение: метод call у функций не существует в IE5.0, поздние версии всё имеют. |