Javascript bookmarklet中的正则表达式
我正在尝试构建一个简单的bookmaklet,它接受一个模板并填充它,要求用户提供适当的值。然后将该模板插入到活动文本输入元素中。但我得到的那个笨蛋没有反应 以下是纯javascript文本(用于测试):Javascript bookmarklet中的正则表达式,javascript,regex,Javascript,Regex,我正在尝试构建一个简单的bookmaklet,它接受一个模板并填充它,要求用户提供适当的值。然后将该模板插入到活动文本输入元素中。但我得到的那个笨蛋没有反应 以下是纯javascript文本(用于测试): var template=“亲爱的${Customer}请将您的想法放入${hole};” 警报(填充模板(模板)); 函数填充模板(模板){ var结果=模板; //搜索所有要替换的变量,例如${Column name} var templateVars=template.match(/\$
var template=“亲爱的${Customer}请将您的想法放入${hole};”
警报(填充模板(模板));
函数填充模板(模板){
var结果=模板;
//搜索所有要替换的变量,例如${Column name}
var templateVars=template.match(/\$\{[^\}]+\}/g);
如果(!templateVars){
返回结果;
}
对于(变量i=0;i
上面的代码按预期工作,但在转换为bookmarklet时却无法工作。
提前感谢。在调用之前,请先尝试将
fillTemplate
的定义放在首位。你也应该考虑把整个事情放在IFIE闭包<代码>中;(function(){…})(这样文档本身就不会以fillTemplate
方法结束这对我来说就像在Chrome39和Firefox33中一样有效。你用的是哪种浏览器?亲爱的Rhumboll,我想了想,两种都试过了,但还是不起作用。否则我会再检查一遍。但至少模板声明应该在函数声明之前。亲爱的Rhumboll,我再次检查了你的建议,它成功了。我没有改变其他任何事情。我不知道我以前试过的时候做错了什么。如果你想公布答案,我会接受的。当做
var template="Dear ${Customer} please put your ideas inside ${hole};"
alert(fillTemplate(template));
function fillTemplate(template) {
var result = template;
// Search for all the variables to be replaced, for instance ${Column name}
var templateVars = template.match(/\$\{[^\}]+\}/g);
if (!templateVars) {
return result;
}
for (var i = 0; i < templateVars.length; ++i) {
var variableData = prompt("Please give a value for "+templateVars[i])
result = result.replace(templateVars[i], variableData || "");
}
return result;
};