为什么下面的javaScript代码不返回任何元素?
为什么下面的javaScript代码不返回任何元素 以下是html代码:为什么下面的javaScript代码不返回任何元素?,javascript,html,Javascript,Html,为什么下面的javaScript代码不返回任何元素 以下是html代码: <div class="misc" data-custom-test="test1" data-custom-test="test2"></div> 谢谢。当我在Chrome中的JSFIDLE中运行实验时,document.queryselectoral()仅当具有给定属性名称的第一个属性与选择器匹配时,才会在给定元素上找到匹配项。或者换句话说,如果您有同一属性的多个定义,document.que
<div class="misc" data-custom-test="test1" data-custom-test="test2"></div>
谢谢。当我在Chrome中的JSFIDLE中运行实验时,
document.queryselectoral()
仅当具有给定属性名称的第一个属性与选择器匹配时,才会在给定元素上找到匹配项。或者换句话说,如果您有同一属性的多个定义,document.querySelectorAll()
在其中任何一个中都找不到匹配项,而不是第一个
我还没有测试过其他浏览器,看看它们在这方面的表现如何,但这足以告诉您,像您一样使用相同属性名称的多个定义存在问题
此外,标签中明确指出,在同一标签中不能有重复的属性
同一开始标记上不得有两个或多个属性
名称之间是不区分大小写的ASCII匹配
我不知道您真正想解决的是什么问题,但一种常见做法是在同一属性定义上使用多个值,方法是使用分号之类的分隔符分隔多个值,然后可以使用选择器中的
*=
运算符查找包含如下子字符串的属性:
<div class="misc" data-custom-test="test1;test2"></div>
var elements = document.querySelectorAll('[data-custom-test*="' + "test2" + '"]');
console.log(elements.length);
var elements=document.querySelectorAll(“[data custom test*=”+“test2”+“]”);
console.log(elements.length);
当我在Chrome中的JSFIDLE中运行实验时,document.querySelectorAll()
将仅在具有给定属性名称的第一个属性与选择器匹配时,才会在给定元素上找到匹配项。或者换句话说,如果您有同一属性的多个定义,document.querySelectorAll()
在其中任何一个中都找不到匹配项,而不是第一个
我还没有测试过其他浏览器,看看它们在这方面的表现如何,但这足以告诉您,像您一样使用相同属性名称的多个定义存在问题
此外,标签中明确指出,在同一标签中不能有重复的属性
同一开始标记上不得有两个或多个属性
名称之间是不区分大小写的ASCII匹配
我不知道您真正想解决的是什么问题,但一种常见做法是在同一属性定义上使用多个值,方法是使用分号之类的分隔符分隔多个值,然后可以使用选择器中的
*=
运算符查找包含如下子字符串的属性:
<div class="misc" data-custom-test="test1;test2"></div>
var elements = document.querySelectorAll('[data-custom-test*="' + "test2" + '"]');
console.log(elements.length);
var elements=document.querySelectorAll(“[data custom test*=”+“test2”+“]”);
console.log(elements.length);
问题在于元素不能有重复的属性()。根据Jukka K.Korpela的回答中提供的信息:
同一开始标记上不得有两个或多个名称彼此不区分大小写的ASCII匹配的属性
结果可能因浏览器而异,但通常第二个属性会被直接忽略。例如,如果您具有重复的样式
属性,则会发生相同的情况:
是红色还是蓝色?
问题是元素不能有重复的属性()。根据Jukka K.Korpela的回答中提供的信息:
同一开始标记上不得有两个或多个名称彼此不区分大小写的ASCII匹配的属性
结果可能因浏览器而异,但通常第二个属性会被直接忽略。例如,如果您具有重复的样式
属性,则会发生相同的情况:
它是红色还是蓝色?
只需查看finish html:您的div刚刚拥有第一个attribute@hendry:不确定您链接到该帮助文章的原因。你在问题中没有看到MCVE吗?只需看看FinishHTML:你的div刚刚开始attribute@hendry:不确定您链接到该帮助文章的原因。您在问题中没有看到MCVE吗?可能是首先应用规范?接下来就忽略?或者,使用空格作为分隔符允许您使用[data custom test~=test2]
,确保不会错误地匹配部分值,但它有一个警告,即保留空格字符作为分隔符。可能是先应用规范?然后忽略?或者,使用空格作为分隔符允许您使用[data custom test~=test2]
,确保不会错误地匹配部分值,但需要注意的是保留空格字符作为分隔符。