根据prompt()值设置字符串?

时间:2016-06-06 09:46:35

标签: javascript css-selectors

我有以下代码段:

var max = prompt("");   
var selector = '#list > listitem > label[value=max]';
var node = document.querySelector(selector);
node.click();

我想根据selector的输入值设置max字符串。

1 个答案:

答案 0 :(得分:1)

如果您的意思是要在选择器中使用max变量的值,请使用字符串连接(并在其周围加上引号):

var max = prompt("");   
var selector = '#list > listitem > label[value="' + max + '"]';
var node = document.querySelector(selector);

那里有两件不同的事情:

  1. 我们正在使用字符串连接将max放入字符串中。

  2. 完全与此无关,我们还将该值放在选择器的引号中,以便空格或其他字符不会炸毁选择器。 [value=foo]是有效的属性匹配选择器,但[value=foo bar]不是。 [value="foo bar"]是。虽然将值放在引号中并不会解决所有问题(特别是,如果用户键入",您就会遇到麻烦),但它至少会处理空格。

  3. 或者,如果您使用的是ES2015(又名“ES6”),则可以使用模板字符串:

    // ES2015 only!
    var max = prompt("");   
    var selector = `#list > listitem > label[value="${max}"]`;
    var node = document.querySelector(selector);
    

    但请注意,valuenot a valid attribute for label elements。表单字段包含value,而不是标签。