document.querySelector("#" + selectedEngine.id).click();当selectedEngine.id没有空格的时候上面语句是正常执行的,但是selectedEngine.id包含空格的时候不能执行了,有什么解决办法?  先谢谢!!!

解决方案 »

  1.   

    try:
    document.querySelector("#" + String( selectedEngine.id).replace(/\s/g, '\\$&')).click();
      

  2.   

    我是写Firefox脚本的,操作的是Firefox的ID,所以ID的空格由不得我。
      

  3.   

    搞定!多谢牛人!!!
    .replace(/\s/g, '\\$&')  这段代码能否解释一下?
      

  4.   

    搞定!! 多谢牛人!!replace(/\s/g, '\\$&') 可否解释一下?
      

  5.   

    这个是用到正则表达式,我可以大致解释一下 replace(/\s/g, '\\$&') 的意思(我的理解)
    根据W3C的介绍(http://www.w3school.com.cn/js/jsref_replace.asp)stringObject.replace(regexp/substr,replacement)
    说明字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。$1、$2、...、$99  与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
    $&  与 regexp 相匹配的子串。
    $`  位于匹配子串左侧的文本。
    $'  位于匹配子串右侧的文本。
    $$  直接量符号。
    \s  匹配一个空白字符,包括\n,\r,\f,\t,\v等 有了上述解释,估计楼主你大概知道这个replace(/\s/g, '\\$&')的含义了
    就是在(给定的字符串)含有一个空格的地方替换成\
    希望这些资料对你有所帮助