Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript bookmarklet中的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript bookmarklet中的正则表达式

Javascript bookmarklet中的正则表达式,javascript,regex,Javascript,Regex,我正在尝试构建一个简单的bookmaklet,它接受一个模板并填充它,要求用户提供适当的值。然后将该模板插入到活动文本输入元素中。但我得到的那个笨蛋没有反应 以下是纯javascript文本(用于测试): var template=“亲爱的${Customer}请将您的想法放入${hole};” 警报(填充模板(模板)); 函数填充模板(模板){ var结果=模板; //搜索所有要替换的变量,例如${Column name} var templateVars=template.match(/\$

我正在尝试构建一个简单的bookmaklet,它接受一个模板并填充它,要求用户提供适当的值。然后将该模板插入到活动文本输入元素中。但我得到的那个笨蛋没有反应

以下是纯javascript文本(用于测试):

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;
};