Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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/2/jquery/86.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 获取<;的属性值;李>;从无序列表<;ul>;_Javascript_Jquery - Fatal编程技术网

Javascript 获取<;的属性值;李>;从无序列表<;ul>;

Javascript 获取<;的属性值;李>;从无序列表<;ul>;,javascript,jquery,Javascript,Jquery,我想在带有classcategoryID的span中显示属性为“li”的ID值aria selected=“true” 我的代码如下所示: var category_Tree=$('categorycontainer')。查找(“[aria selected='true']”); var selected_category=category_Tree.attr(“id”); $('.categoryID').html(所选类别) 谷歌 雅虎 Bing Facebook 亚马逊 您可以使用

我想在带有class
categoryID的span中显示属性为“li”的ID值
aria selected=“true”

我的代码如下所示:

var category_Tree=$('categorycontainer')。查找(“[aria selected='true']”);
var selected_category=category_Tree.attr(“id”);
$('.categoryID').html(所选类别)

  • 谷歌
  • 雅虎
  • Bing
  • Facebook
  • 亚马逊

您可以使用css属性选择器获取属性为
aria selected='true'
的所有元素。选择li元素后,通过id属性获取它们的id

let li=document.querySelectorAll(“#categorycontainer>ul>li[aria selected=true]”);
让categoryID=document.querySelector('.categoryID');
让ids='';
为了(让我离开李){
id+=(i.id+'\n');
}
categoryID.textContent=id

  • 谷歌
  • 雅虎
  • Bing
  • Facebook
  • 亚马逊

首先将html转换为数据(在本例中为对象数组),然后很容易进行过滤。从现在开始,可以更轻松地尝试以下操作:

const数据集=[…document.queryselectoral('ul-li')].map(li=>({id:li.id,selected:li.getAttribute('aria-selected'))
const data=dataset.find(data=>data.selected=='true')
document.querySelector('.categoryID').textContent=data.id

  • 谷歌
  • 雅虎
  • Bing
  • Facebook
  • 亚马逊

测试您发布的代码,它似乎运行良好……您的示例运行良好。问题:(1)此代码在您的页面中的何处?(2) 它是否包装在
$(document).ready(function(){…})中尝试
console.log(类别树)
可能返回了多个元素。如果是这样的话,你必须像
.find(“#categorycontainer[aria selected='true']”)那样专门化你的查询
——这样做之后,你的查询会更加专业化一些,但你明白了一点:你只是用不同的方式重新编写了OP的代码。这不是一个“解决方案”-你没有告诉OP他/她的例子有什么问题,也没有告诉OP你的例子为什么解决了这个问题。(提示:OP的代码没有问题,所以在他们提供更多细节之前,确实没有有效的答案。)@TylerRoper我认为他的问题是添加属性为true的每个元素的id。但当有更多元素的ariaselected属性值为true时,OP的代码不起作用。你可以在密码笔里查他的密码。对于jquery,他可以使用jquery选择器“$”代替document.querySelector。您只需以不同的方式重新编写OP的代码。这不是一个“解决方案”-你没有告诉OP他/她的例子有什么问题,也没有告诉OP你的例子为什么解决了这个问题。(提示:OP的代码没有任何问题,因此在他们向我们提供更多细节之前,确实没有一个有效的答案。)在我的回答中,我试图强调在这种情况下,处理数据比处理DOM更简单、更容易。这个例子试图强调这一点。我认为这是一个正确的答案