javascript - 可以在javascript中复制项目的错误按钮:不显示值
问题描述
我是 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}”。
解决方案
从您上次的屏幕截图来看,您的复选框似乎在表格中,因此当您选择它时,您没有整行,而只有列中的元素。我建议您了解CSS 选择器以实现复制整行的目标。您可以使用以下功能:
document.querySelector("your Css selector here !")
获取您想要的 DOM 节点。
如果我错了,请纠正我,但我认为没有简单的方法来选择元素的父节点。假设您有这张桌子:
<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>
您可能无法通过获取复选框元素本身来获取整行,因为您无法获取其父节点。因此,您可能想要更改您的表格,以便更容易使用:
<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>
现在您可以使用以下 JS 代码轻松获取您的行:
var secondRow = document.querySelector("#mySecondRow");
这可能不是这里最好的选择,但它只是给你一个例子,说明你可以用 Css Selector 做什么。
由于您是 JS 新手,您应该继续查看 w3schools 网站,因为它包含大量信息。
编辑:正如 Chris Satchell 所说,您仍然可以在 JavaScript 中获取它(使用 parentNode):document.getElementById('firstCheckbox').parentNode。
推荐阅读
- javascript - 有没有办法检测选择标签将充当下拉窗口或弹出窗口?
- python - -2 和 2 之间均匀分布的 10 个随机点列表
- powershell - 变量内的输入列表,检查用户是否存在,如果 true 附加到新变量 Powershell
- r - 具有嵌套因子的 data.frame 到 igraph 气泡图中
- python - 计算和使用 Jacobian for solve_ivp 方法
- c# - MVC 5 中的 ApplicationUser 列表为空?
- python - 如何使用 Python 将 100 万行插入 Oracle 数据库?
- oracle - 如果包含子字符串,则比较字符串,无论顺序如何
- google-apps-script - 滚动随机“骰子”数字然后求和值(GAS)的问题
- javascript - 用户按下取消按钮后如何停止运行谷歌脚本?