可以复制javascript中的项目的错误按钮:不显示值

时间:2018-08-02 08:28:19

标签: javascript haml

我是javascript的新手,我需要为我的项目创建一个重复按钮:我有一个复选框列表,其中包含不同类型的发现,当其中一个处于选中状态时,我希望有一个按钮来复制此发现。 我做了这样的事情:

%input.checkbox#finding_id{ :type=>"checkbox", :name=>"#{finding.id}" }

%a.btn.btn-success#addd{ :href => "#", :onclick => "duplicate()" }
%i.icon-plus.icon-white{ :title => "Add" }

:javascript
 document.getElementById('addd').click = duplicate;
 var i = 0;
 var original = document.getElementById('inf_#{finding.id}');

 function duplicate() {
 var clone = original.cloneNode(true);
 clone.id = "inf_#{finding.id}" + ++i;
 original.parentNode.appendChild(clone);
 }   

但是我认为我有一个语法问题,它无法识别为haml中的每一行创建动态ID的“ inf _#{finding.id}”。

1 个答案:

答案 0 :(得分:0)

从最后一个屏幕截图来看,您的复选框似乎在表格中,因此,当您选择它时,您没有整行,而只有列中的元素。 我建议您学习CSS selector,以实现复制整个行的目标。您可以使用以下功能:
 case "~play": if (queue.length == 0) { queue.push(args[1]); dispatcher = guild.voiceConnection.playStream(ytdl(queue[0], { filter: 'audioonly' })).on('end', () => { console.log('finished'); queue.shift(); guild.voiceConnection.playStream(ytdl(queue[0], { filter: 'audioonly' })); }); } else queue.push(args[1]); break; 获取所需的DOM节点。

如果我错了,请更正我,但我认为没有简单的方法来选择元素的父节点。假设您有此表:

document.querySelector("your Css selector here !")

您可能无法通过获取复选框元素本身来获取整行,因为您无法获取其父节点。因此,您可能需要更改表格,以便更轻松地使用它:

 <table style="width:100%">
  <tr>
    <th>Checkbox</th>
    <th>Label</th>
    <th>Level</th>
  </tr>
  <tr>
    <td><input type="checkbox" id="firstCheckbox"></td>
    <td>My first checkbox</td>
    <td>50</td>
  </tr>
  <tr>
    <td><input type="checkbox" id="secondCheckbox"></td>
    <td>My second checkbox</td>
    <td>94</td>
  </tr>
</table> 

现在,您可以使用此JS代码轻松获取行:
<table style="width:100%"> <tr> <th>Checkbox</th> <th>Label</th> <th>Level</th> </tr> <tr id="myFirstRow"> <td><input type="checkbox"></td> <td>My first checkbox</td> <td>50</td> </tr> <tr id="mySecondRow"> <td><input type="checkbox"></td> <td>My second checkbox</td> <td>94</td> </tr> </table>

这可能不是最佳选择,但这只是为了让您举例说明可以使用Css Selector进行的操作。

由于您是JS的新手,您应该继续学习一下w3schools网站,因为它包含很多信息。

编辑:正如Chris Satchell所说,您仍然可以在JavaScript中(使用parentNode)获取它:document.getElementById('firstCheckbox')。parentNode。