【问题标题】: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 方法,在stackoverflow.com/questions/1789945/…查看这个@Avi Flax 答案
  • 我正在寻找我的错误@Justinas
  • getParameterByName 函数怎么样?你会写吗?
  • 现在我看到我的 getParameterFunction() 坏了,这就是为什么不工作谢谢大家

标签: javascript jquery html css


【解决方案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>
  • 已编辑答案..
猜你喜欢
  • 2018-11-25
  • 2020-08-19
  • 1970-01-01
  • 2012-02-16
  • 2011-02-13
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
相关资源
最近更新 更多