我有一些图像具有如下数据属性:
<img id="popup" class="Absolute_Center is_Image" alt="Girl Popup" data-picture="">
<img src="https://s3-us-west-2.amazonaws.com/example.jpg" data-picture = "1">
<img src="https://s3-us-west-2.amazonaws.com/example2.jpg" data-picture = "2">
etc...
我想添加一个事件监听器来检索系列中的下一张图片。我想我可以这样做:
var oimgPopup = document.getElementById("popup");
/* retrieve data-picture value of current image showing in the image popup */
var y = oimgPopup.dataset.picture;
var y = oimgPopup.dataset.picture;
y = y + 1;
// Prints out corect data-picture value + 1
var nextImage = document.querySelector('[data-picture =' + y + ']');
console.log(nextImage);
/* SyntaxError: An invalid or illegal string was specified
var nextImage = document.querySelector('[data-picture =' + y + ']'); */
我将检索系列中的下一个图像元素对象,然后将其插入到#mypopup图像元素中。但是当我运行它时,我收到一个非法的字符串消息。有谁知道如何将变量合并到querySelector属性选择器中?提前谢谢......
答案 0 :(得分:3)
当您使用attribute selectors之类的[attr = value]
时,
属性值必须为CSS identifiers或strings。
您没有引用该值,因此将其解析为identifier。然而,
在CSS中,标识符[...]不能以数字
开头
因此,您的数字选择器无效。你可以:
逃避价值,例如如果y
为123
则需要\31 23
document.querySelector('[data-picture =' + CSS.escape(y) + ']')
使用字符串,例如如果您知道y
不包含引号,
document.querySelector('[data-picture = "' + y + '"]')