Javascript 在具有数据id属性的选择器中使用变量

Javascript 在具有数据id属性的选择器中使用变量,javascript,css-selectors,Javascript,Css Selectors,我有一些具有数据属性的图像,如: <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.ama

我有一些具有数据属性的图像,如:

    <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...
在这里,我将检索序列中的下一个图像元素对象,然后将其插入到#mypopup图像元素中。但是,当我运行此命令时,我收到一条非法字符串消息。有人知道如何将变量合并到querySelector属性选择器中吗?提前感谢…

当您使用like
[attr=value]

属性值必须是CSS或

您没有引用该值,因此将其解析为。但是,

在CSS中,标识符[…]不能以数字开头

因此,您的数字选择器无效。你可以:

  • 转义该值,例如,如果
    y
    123
    则需要
    \31 23

    document.querySelector('[data-picture =' + CSS.escape(y) + ']')
    
  • 使用字符串,例如,如果您知道
    y
    不包含引号

    document.querySelector('[data-picture = "' + y + '"]')
    

当console.log在y=y+1之后连接而未添加时,您忘记了关闭图像标记。我需要做一个Parseint(),添加到y,然后返回到字符串y.toString()?比我自己的答案好得多。我完全忘记了“不能以数字开头”的限制。@alan我不喜欢
parseInt
。我会使用
y=+y+1
。当与字符串连接时,它已经被强制为字符串,因此不需要
toString
。就是这样!。谢谢,我一直在努力解决这个问题。但你在一分钟内就搞定了。我必须研究+y+1,因为我不知道如何增加字符串。只有一件事。我可以使用data picture=“1”,因为我将一指定为字符串,对吗?
document.querySelector('[data-picture = "' + y + '"]')