我是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}”。
答案 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。