Javascript 选择2停止为克隆行工作,为什么?

Javascript 选择2停止为克隆行工作,为什么?,javascript,ruby-on-rails,select2,Javascript,Ruby On Rails,Select2,选择2“克隆新行时停止工作”下拉菜单“工作” 仅适用于克隆对象的第一行(默认一行)“下拉菜单 不起作用的。这是我的密码: **= f.inputs 'Items not in inventory' do %table %thead %td{style: 'width: 20%; padding-left: 20px;'} %b Select Product %td{style: 'max-width: 70px;'}

选择2“克隆新行时停止工作”下拉菜单“工作” 仅适用于克隆对象的第一行(默认一行)“下拉菜单 不起作用的。这是我的密码:

**= f.inputs 'Items not in inventory' do
    %table
      %thead
        %td{style: 'width: 20%; padding-left: 20px;'}
          %b Select Product
        %td{style: 'max-width: 70px;'}
          %b Repossessed Inventory (Serial/Amount)

      %tbody{id: 'tableToModify'}
        %tr{id: 'rowToClone'}
          = semantic_fields_for :other_stuff do |os|
            %td{style: 'padding-left: 20px;'}
              = os.input :product_id, as: :select, label: false, collection: Product.all.order(:name).pluck(:name, :id), input_html: {class: 'select2'}
            %td
              = os.input :repossessed, label: false, input_html: { style: 'width: 100px;' }
              %td

                = link_to "x", "javascript:if ($('#tableToModify tr').length > 1) {document.getElementById('tableToModify').deleteRow($('#tableToModify tr').length - 1);}"

    = link_to 'Add item', 'javascript:cloneRow()'
    = f.input :rest_is_lost, as: :boolean, label: 'Mark unrepossessed items as lost', input_html: { checked: 'checked' }

  = f.actions do
    = f.action :submit, label: 'Create Repossession Case'
    = f.action :cancel, label: 'Cancel', button_html: { href: url_for(action: :index) }, wrapper_html: { class: :cancel }

:javascript
  function cloneRow(){
    var row = document.getElementById("rowToClone");
    var table = document.getElementById("tableToModify");
    var clone = row.cloneNode(true);
    var numberOfRows = document.getElementById("tableToModify").rows.length;
    clone.id = numberOfRows + 1;
    table.appendChild(clone);
  }**

您必须先销毁select2,然后才能克隆行,然后再次绑定它:

function cloneRow(){
  var row = document.getElementById("rowToClone");
  var table = document.getElementById("tableToModify");

  $(table).find('select').select2('destroy');

  var clone = row.cloneNode(true);
  var numberOfRows = document.getElementById("tableToModify").rows.length;
  clone.id = numberOfRows + 1;
  table.appendChild(clone);

  $(table).find('select').select2();
}

非常感谢您提供的提示,但这也不起作用,我尝试在输入中获取元素并使用select2进行绑定,但我失败了很多次。我不知道为什么!!!它给了我这个错误:clone.getElementById不是一个函数使用
console.log(clone)
检查什么是
clone
。它没有定义{ReferenceError:clone没有定义},所以。。。您尚未定义此变量。。。能否显示代码的一部分,其中您尝试调用
clone.getElementById