Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取javascript中元素的动态类_Javascript - Fatal编程技术网

获取javascript中元素的动态类

获取javascript中元素的动态类,javascript,Javascript,我有一个表,其中包含一堆tr元素,这些元素具有随机的、动态创建的ID,以及具有匹配ID的相应div。我想使用on('click')函数,以便在单击一个具有给定id的tr元素时,也可以通过javascript单击相应的div id 下表: <tbody> <tr id="a94k5h3"></tr> <tr id="0f3l6k2"></tr> <tr id="44jg96a"></tr>

我有一个表,其中包含一堆tr元素,这些元素具有随机的、动态创建的ID,以及具有匹配ID的相应div。我想使用on('click')函数,以便在单击一个具有给定id的tr元素时,也可以通过javascript单击相应的div id

下表:

<tbody>
    <tr id="a94k5h3"></tr>
    <tr id="0f3l6k2"></tr>
    <tr id="44jg96a"></tr>
</tbody>
上面的代码适用于第一个,但实际上我不知道id#a94k5h3是什么,或者会有多少tr/div。任何帮助都将不胜感激

-编辑

我正在使用knack,它动态创建所有html元素,这不是我的代码。我附上了一个可能的澄清输出图像。 [![在此处输入图像描述][1][1]


本质上,我在一个页面上有两次相同的html元素。当一个被单击时,我希望另一个也被单击。

因为在一个页面上不能有重复的ID,所以我建议您使用
数据-*
属性,如下所示:

<tr data-id="#a94k5h3">

a94k5h3单击我
0f3l6k2单击我
44jg96a点击我
分区a94k5h3
分区0f3l6k2
第44jg96a分部

您的dom中不应该有重复的id,而应该有
数据-*
属性。我选择了
数据id
,但您可以抓取单击行的id,然后根据该id进行选择,它看起来像这样:

<tr data-id="#a94k5h3">
$(文档)。在('click','tr',(event)=>{
event.preventDefault()
let id=$(event.currentTarget.attr('id'))
$(`[data id=${id}]`).addClass('selected')。单击()
})
tr{背景色:红色}
div.selected{背景色:黄色}

点击我
点击我
点击我
1.
2.

3
添加TR元素单击处理程序,要单击相应的DIV元素,需要一个不涉及未知随机
id
值的查询选择器。例如,根据控制台日志映像:

"#view_349 table.kn-table TBODY TR"
我假设DIV元素的选择器按照提供的方式工作

"#view_349 .kn-view.kn-map-results.view_349 #" + divId
然后TR元素单击侦听器函数可以使用被单击的TR元素的id

 event.target.id
要使用JQuery查找相应的DIV元素,请执行以下操作:

$(document).on('click', "#view_347 TR" function(event) { 
    event.preventDefault();
    var targetId = event.target.id;
    $("#view_349 .kn-view.kn-map-results.view_349 #" + targetId).click(); 
});

这可能在JQuery中起作用,但忽略了一个事实,即具有相同id的两个元素不是有效的HTML,正如前面在注释和其他答案中讨论的那样。我建议在不重复完全相同的元素id值的情况下,研究生成HTML的可能性。

属性
id
应该是唯一的。标记中的内容是一场即将发生的灾难。我已经简化了我的示例。有多个类与tr元素和div元素都关联。ID相同的原因是因为它们都包含相同的信息,只有一个在表中,一个在地图中。元素ID不应该是相同的,无论推理如何。啊,我看到了混淆。它们不是重复的ID,它们是相同的元素。@Drewschlictmann但在您的问题中,您用HTML声明并显示了您显式地拥有具有完全相同ID的
元素和
元素,并询问如何触发对与单击的对象共享相同ID的div的单击<代码>…因此,当单击一个具有给定id的tr元素时,也会通过javascript单击相应的div id…您能解释更多吗?tr和div基本上都包含来自数据库的相同记录。一个在表格中显示,另一个在地图中显示。单击表时,我希望单击映射表。基本上,假设我在一个页面上列出了两次相同的id,因为我想显示两次。我很抱歉说不清楚。@Drew我想你很难理解重复ID的含义。这意味着在一个页面中,您可以在两个或多个地方使用
id=“blabla”
。照答案说的做。在一个地方使用ID——并使用数据属性和JS引用它。或者根本不使用Id。它们不是重复的Id,它们是相同的Id,基本上放在页面上两次。基本上,我所需要的就是当一个元素被点击时,任何其他的元素都应该被点击。我已经根据图片更新的结果改写了答案,希望它能有所帮助。从技术上讲,“重复id”意味着文档树中有多个元素具有相同的id值。
$(document).on('click', "#view_347 TR" function(event) { 
    event.preventDefault();
    var targetId = event.target.id;
    $("#view_349 .kn-view.kn-map-results.view_349 #" + targetId).click(); 
});