Как добавить дочерние элементы элемента в один и тот же элемент с некоторыми изменениями

0

У меня есть следующий html-код

<button id="button_id" class="scalable add" title="Add email" type="button" onclick="emailsControl.addItem()" style="">
<tbody id="email_chain_container">
    <tr>
        <td class="nobr">
            <input type="file" id="chain_Image_1"  name="Image[1]" class="input-text" />
        </td>
        <td class="last"><input type="hidden"  class="delete" name="email_chain[delete][]" />
            <button onclick="emailsControl.deleteItem(event);return false" class="scalable delete icon-btn delete-product-option" title="Delete Image"><span><?php echo $this->__('Delete')?></span>   
            </button>
        </td>
    </tr>
</tbody>

когда вы нажимаете на кнопку, я хочу получить элементы внутри tbody и изменить индекс во входном элементе на индекс + 1, а затем снова добавить элемент в tbody. Это грубый код, который я использовал для него. Однако его не работает

emailsControl = {
    addItem: function ()
    {
        var chainParent = document.getElementById('email_chain_container');
        var index = chainParent.childNodes.length; //get the number of tr elements present in tbody
        var repeat = chainParent.innerHTML;
        var newHTML = repeat.replace(index, (index + 1)).
        replace('Image[' + (index) + ']', 'Image[' + (index + 1) + ']');
        document.chainParent.appendChild(newHTML);
    },
}

Как я могу сделать это наиболее эффективным способом? Предложите свои идеи. заранее спасибо

  • 0
    Твоего tbody нет в table ?
  • 0
    Я вижу, вы используете JQuery. Почему бы не лучше использовать библиотеку, используя ее функции обхода. Есть даже методы filter () и attr (), которые вы можете вызвать. api.jquery.com/category/Traversing
Показать ещё 6 комментариев
Теги:

1 ответ

0
Лучший ответ

Наконец, я это сделал. Не знаю, лучший ли это метод. Но это сработало !!!

<script type="text/javascipt">
emailsControl = 
{
     addItem : function () 
     {
         var chainParent = document.getElementById( 'email_chain_container' );
         var trElements = chainParent . getElementsByTagName("tr");
         var index = trElements . length;
         var childElements = trElements[0] . innerHTML;
         var newHTML = childElements . replace( /1/g , (index+1))
         var tr = document . createElement('tr');
         tr . innerHTML = newHTML;
         chainParent . appendChild (tr);        

   },
}
</script>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню