Javascript 如何在字符串中使用变量

Javascript 如何在字符串中使用变量,javascript,jquery,Javascript,Jquery,我试图在字符串中实现一个变量。我一直在寻找这个,并试图用不同的东西来攻击它,但似乎没有任何效果 我有一个变量如下所示: http:localhost:8080/Editor/?name=Default HMI.Builder.init('Files/HMIBuilder/', function () { //run code after page/iframe is loaded }); 我可以通过以下方式获取值: function

我试图在字符串中实现一个变量。我一直在寻找这个,并试图用不同的东西来攻击它,但似乎没有任何效果

我有一个变量如下所示:

http:localhost:8080/Editor/?name=Default 
 HMI.Builder.init('Files/HMIBuilder/', function () {
                //run code after page/iframe is loaded
            });
我可以通过以下方式获取值:

function getQueryVariable(variable) {
                var query = window.location.search.substring(1);
                var vars = query.split("&");
                for (var i = 0; i < vars.length; i++) {
                    var pair = vars[i].split("=");
                    if (pair[0] == variable) { return pair[1]; }
                }
                return (false);
            }

            var name = getQueryVariable("name")
我要做的是将变量添加到字符串Files/HMIBuilder/{name} 这是行不通的。它需要像这样结束

Files/HMIBuilder/Default

或者传递任何变量

您必须使用javascript
+
符号将字符串与变量连接起来,如下所示:

HMI.Builder.init('Files/HMIBuilder/' + getQueryVariable("name"), function () {
  //run code after page/iframe is loaded
});
或者使用方便的
replace
以提高可读性:

HMI.Builder.init('Files/HMIBuilder/{name}'.replace('{name}', getQueryVariable("name")), function () {
  //run code after page/iframe is loaded
});
var route = 'Files/HMIBuilder/{name}'.replace('{name}', getQueryVariable("name"));
HMI.Builder.init(route, function () {
  //run code after page/iframe is loaded
});
当然,您可以通过两个步骤来实现更高的可读性:

HMI.Builder.init('Files/HMIBuilder/{name}'.replace('{name}', getQueryVariable("name")), function () {
  //run code after page/iframe is loaded
});
var route = 'Files/HMIBuilder/{name}'.replace('{name}', getQueryVariable("name"));
HMI.Builder.init(route, function () {
  //run code after page/iframe is loaded
});
最后,在最新的浏览器(以及一些向后兼容的Transpiler)上,您可以使用ES6“`”语法:


使用模板文本

HMI.Builder.init(`Files/HMIBuilder/${getQueryVariable(variable)}`, function () {

            //run code after page/iframe is loaded
        });

通过运行以下函数,可以获得参数列表

function extractParams(url) {
    new URL(url).search.substr(1).split('&').map(x => {
        var y = x.split('=');
        return { [y[0]]: y[1] };
    });
}

var params = extractParams('https://www.website.com?id=151&name=john');
哪个会打印以下内容


[{id:151},{name:john}]

完美。。非常感谢。我使用了第三个选项。还有第二部分,我可能也会把它作为一个问题提出。那么我应该使用第四个选项吗?我想用最新的。如果这是正在使用的最新格式,那么我应该使用它。。我还不能回答另一个问题,因为它说我必须等90分钟。。。新手规则我猜…没有“最新”选项,这实际上是一个品味和项目编码标准的问题。就个人而言,我更喜欢第三和第四种选择;)