切断JavaScript分割函数传递的最后几个值的字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了切断JavaScript分割函数传递的最后几个值的字符相关的知识,希望对你有一定的参考价值。

我有javascript代码传递上一页的开始和结束时间值,但是,起始值包含不需要的其他字符。有没有办法可以减少不必要的角色?

转发时搜索栏中的URL为localhost:56363/Bookings.aspx#start=27/02/2018 12:30&end=27/02/2018 17:30&end将传递到开始输入框但不需要。 JavaScript代码如下:

<script type="text/javascript">
  $(document).ready(function () {
    hash();
    function hash() {
      var hashParams = window.location.hash.substr(1).split('#');
      for (var i = 0; i < hashParams.length; i++) {
        var p = hashParams[i].split('=');
        document.getElementById("<%=start.ClientID%>").value = decodeURIComponent(p[1]);
      }
      var hashParams = window.location.hash.substr(1).split('&');
      for (var i = 0; i < hashParams.length; i++) {
        var p = hashParams[i].split('=');
        document.getElementById("<%=end.ClientID%>").value = decodeURIComponent(p[1]);;
      }
    }
  });
 </script>
答案

哈希参数?!什么!

大多数应用程序将使用查询参数和一个看起来像localhost:56363/Bookings.aspx?start=27/02/2018 12:30&end=27/02/2018 17:30的网址注意?而不是哈希。查询参数将以window.location.search的形式提供

无论如何。将您的hash()功能更改为

function hash(){
    var hash = window.location.hash;

    var start = hash.match(/start=([^&]+)/)[1];
    document.getElementById("<%=start.ClientID%>").value = decodeURIComponent(start);

    var end = hash.match(/end=([^&]+)/)[1];
    document.getElementById("<%=end.ClientID%>").value = decodeURIComponent(end);
}

正则表达式将找到相关参数,捕获组([^&]+)将捕获每个参数的值。然后我们使用[1]来检索每个参数的值。

以上是关于切断JavaScript分割函数传递的最后几个值的字符的主要内容,如果未能解决你的问题,请参考以下文章

运行一个函数 x 次,然后在再次运行之前休眠一段时间

使用GetElementById传递多个值(并在某个字符后分割)

如何在mvc中传递具有2个值的查询字符串

在 str.split 操作后创建具有最后 2 个值的新列

n 个值的非重复二进制对

使用最后 n 个值的平均值或中值填充数据框不同列中的缺失值