通过点击同一分区中的按钮来动态选择一个元素
Selecting an element dynamically by cicking button in same div
我正在尝试创建一个脚本,以便在具有特定html内容的表中添加另一行。问题是,我想在一个相当长的表单的每一部分上使用相同的脚本。选择表id而不必使用确切的表名似乎让我很难理解。
这里的重点是只需点击"添加"按钮,它就会添加该按钮所在部分的额外项目。但在添加之前,我需要能够选择正确的项目(表id),而无需实际使用"getElementById"。
我一直在寻找答案,但我对web java脚本还是很陌生,我猜我只是不理解一些东西或尝试了错误的方法。。。任何协助都将不胜感激。
HTML
<div id="divOne">
<table id="myTable">
<tr>
<td>Row1 cell1</td>
<td>Row1 cell2</td>
</tr>
</table>
<br />
<button onclick="myFunction()">Test ONE</button>
</div>
<br />
<div id="divTwo">
<table id="testTable">
<tr>
<td>Row1 cell1</td>
<td>Row1 cell2</td>
</tr>
</table>
<br />
<button onclick="myFunction()">Test TWO</button>
</div>
jquery
function myFunction() {
var x = event.currentTarget.parentNode.getAttribute('id');
alert(x); //to test its grabbing correct div THIS ONE WORKS
var child = x.getElementsByTagName('table').getAttribute('id');
alert(child); //to test its grabbing correct THIS ONE DOESNT
}
有两个问题需要解决:
-
根据您的实现,x是父div的id(字符串值),您不能在其上调用'getElementsByTageName('table')。您应该获得元素引用
-
getElementsByTagName()将返回一个HTMLCollection,尝试如下访问它们:children[index]
HTML
<div id="div1">
<table id="answers"></table>
<button onClick="test(event)">test</button>
</div>
JS
function myFunction(e){
var target = e.currentTarget.parentNode;
//fetch id
console.log(target.getAttribute("id"));
//fetch table id
console.log(target.getElementsByTagName("table")[0].getAttribute("id"));
}
这是jsfiddle演示
您已经尝试过jQuery了吗?它有一些让生活更轻松的好方法。您可能需要选择.closest(),它根据您当前的上下文选择一个元素。此外,不再需要使用尴尬的getElementById。。。
您的myFunction
中有一个错误。这应该有助于:http://jsfiddle.net/2wA38/
在这种情况下,您需要查找同级表元素;您可以使用previousSibling
导航DOM,直到到达元素:
function myFunction() {
var node = event.currentTarget,
x = node.parentNode.id;
console.log(x);
while (node && node.tagName != 'TABLE') {
node = node.previousSibling;
}
if (node) {
console.log(node.id);
}
}
相关文章:
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 是否可以仅通过jQuery将图像替换为用户动态选择的另一个图像
- 使用javascript动态选择幻灯片放映的图像
- 带有动态选择选项的Firefox html5验证异常
- laravel5.0中HTML选择标记的动态选择
- 如何禁用s:动态选择
- 在边栏中动态选择项目
- 为动态选择框选择更新功能
- 动态选择框
- 试图让Jquery在Rails和ActiveAdmin中使用动态选择表单
- 带过滤器的jQuery动态选择器
- 确定是否使用javascript定义动态选择
- 添加值以动态选择字段
- 动态选择列表AJAX和插入数据库表通过张贴形式
- 用Javascript创建一个动态选择对象
- 如何在Jquery mobile中处理动态选择菜单事件
- 带有Rails 4的动态选择框
- 根据动态选择框的更改更改URL
- 提交动态选择框值以显示多重多边形