【问题标题】:Set a string based on a prompt() value?根据 prompt() 值设置字符串?
【发布时间】:2016-06-06 22:02:17
【问题描述】:

我有以下sn-p:

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

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

【问题讨论】:

  • 所以?问题是什么?你是说node.maxLength = max
  • “设置提示值”是什么意思?另外,value is not a valid attribute for label elements,所以选择器没有多大意义。
  • @jhonde:不,它无效,请参阅上面规范的链接。你可能有它,但这不等于它是有效的。
  • @jhonde:这是什么意思?
  • node.value = max;

标签: javascript css-selectors


【解决方案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"] 是。虽然将值放在引号中并不能解决所有问题(特别是,如果用户键入 ",您就有麻烦了),但它至少可以处理空格。


或者,如果您使用的是 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,而不是标签。

【讨论】:

  • @jhonde:抱歉,我不知道你想在那里做什么。
  • @jhonde:“设置输出值”是什么意思?
  • @jhonde:很抱歉,您需要朋友或同事帮助您学习英语。您实际提出的问题已得到解答。如果您有后续问题,请让朋友或同事帮助您发布一个新问题,其中包含您需要的新信息。 不需要完美的英语,但我们确实需要了解您的要求。
  • @jhonde:再说一遍:您实际提出的问题已被回答。如果您有其他问题,请将其作为新问题发布(在朋友或同事的帮助下,因为同样,您说的不是很清楚)。
  • @jhonde,您似乎正在尝试将特权 Firefox 附加 API 与普通(甚至 Greasemonkey)javascript 混合使用。无论如何,您都无法做到接近您所展示的内容。打开一个新问题。听从 T.J.Crowder 的建议。
猜你喜欢
  • 2017-04-29
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多