如何获取参数名称? [复制]

Posted

技术标签:

【中文标题】如何获取参数名称? [复制]【英文标题】:How to get parameter name? [duplicate] 【发布时间】:2018-01-29 03:12:45 【问题描述】:

我有一个类似的网址:

//my-url-adresses.com/web/Assets/js/javascripts?v=5.2&marker=2017-05/logo_30dKmOHPNLq8CfiOYfqhmarkerv2.png&cdn=//cdn.mywebsite.com/files/

我想得到这部分:(在 cdn= 之后):

//cdn.mywebsite.com/files/

我在下面提供了我的代码。请纠正我错的地方。提前致谢。

var scripts = document.getElementsByTagName('script');
var index = scripts.length - 1;
var myScript = scripts[index];
var scripturl = myScript.src;
var cdnUrl = getParameterByName("cdn", scripturl);
var markerUrl = getParameterByName("marker", scripturl);


function getParameterByName(name, url) 
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));



console.log(markerUrl);
<script id="scripts" src="//my-url-adresses.com/web/Assets/js/javascripts?v=5.2&marker=2017-05/logo_30dKmOHPNLq8CfiOYfqhmarkerv2.png&cdn=//cdn.mywebsite.com.com/files/" defer></script>

【问题讨论】:

getParameterByName 的代码在哪里 你找不到参数,你通过 indexof() 方法使用 find 方法,在***.com/questions/1789945/…查看这个@Avi Flax 答案 我正在寻找我的错误@Justinas getParameterByName 函数怎么样?你会写吗? 现在我看到我的 getParameterFunction() 坏了,这就是为什么不工作谢谢大家 【参考方案1】:

我注意到您的代码无法使用 index 属性访问脚本 url。我还注意到您的脚本标签中有 id 。最好使用它,否则如果您在页面底部的页面中有一些带有某些功能的脚本标签,它会得到那些(因为您在页面中找到最后一个脚本标签)并且因为它没有有src 它不会获取结果。

这是使用getElementById()的解决方案

var myScript = document.getElementById('scripts');
var scripturl = myScript.src;
var cdnUrl = getParameterByName("cdn", scripturl);
var markerUrl = getParameterByName("marker", scripturl);


function getParameterByName(name, url) 
    url = decodeURIComponent(url);
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));



console.log(markerUrl);
<script id="scripts" src="//my-url-adresses.com/web/Assets/js/javascripts?v=5.2&marker=2017-05/logo_30dKmOHPNLq8CfiOYfqhmarkerv2.png&cdn=//cdn.anitur.com/web/" defer></script>

【讨论】:

好极了【参考方案2】:

试试这个:

   var myScript = document.getElementById('scripts');
var scripturl = myScript.src; // or window.location.href for current url
    var captured = /cdn=([^&]+)/.exec(scripturl )[1];  
    var result = captured ? captured : 'myDefaultValue';
    console.log(result);

【讨论】:

谢谢 Uphar 但它不适用于此脚本标签:<script id="scripts" src="//my-url-adresses.com/web/Assets/js/javascripts?v=5.2&marker=2017-05/logo_30dKmOHPNLq8CfiOYfqhmarkerv2.png&cdn=//cdn.anitur.com/web/" defer></script> 已编辑答案..

以上是关于如何获取参数名称? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio Code 中自动获取参数名称?

PYTHON - 如何在调用文件后获取信息? [复制]

如何获取谷歌地图位置名称? [复制]

如果我知道图像的名称,如何获取图像的资源 ID? [复制]

如何在javascript中获取类的私有属性名称? [复制]

Java如何获取方法参数中的名称