向我解释这段JavaScript代码

时间:2010-08-15 11:25:21

标签: javascript

任何人都可以向我解释这段代码吗?

<script type="text/javascript">


  function querySt(ji) {
      hu = window.location.search.substring(1);
      gy = hu.split("&");
      for (i = 0; i < gy.length; i++) {
          ft = gy[i].split("=");
          if (ft[0] == ji) {
              return ft[1];
          }
      }
  }

  var koko = querySt("koko");

  document.write(koko);
  document.write("<br>");
  document.write(hu);

3 个答案:

答案 0 :(得分:1)

这是从文档的查询字符串中提取变量的函数,例如如果文件的位置是

example.com/test.htm?koko=123

querySt("koko")将返回123

作为旁注,该函数应使用局部变量来防止污染全局名称空间:

var hu = window.location.search.substring(1);
var gy = hu.split("&");
...
for (var i = 0; i < gy.length; i++) {

答案 1 :(得分:1)

该函数在查询字符串中搜索指定的参数,并返回其值。

想象一下这样的网址http://www.my.org/pg.htm?user=2&role=admin

   function querySt(ji) { 
              // Gets all request parameters at client-side (QueryString)
              // hu = ?user=2&role=admin
              var hu = window.location.search.substring(1); 
              // Gets an array of substrings splitted by &
              // gy[0] = user=2
              // gy[1] = role=admin
              var gy = hu.split("&"); 
              // Iterate through the string array
              for (i = 0; i < gy.length; i++) { 
                  // Split into key/value pair
                  // ft[0] = 'user'
                  // ft[1] = '2'
                  ft = gy[i].split("="); 
                  // See wether the key is 'koko'
                  if (ft[0] == ji) { 
                      // return '2' if so
                      return ft[1]; 
                  } 
              } 
          } 

          var user= querySt("user"); 

          document.write(user); 
          document.write("<br>"); 
          document.write(hu); 

在这种情况下,这将打印2。只有在函数Hu范围之外定义时才会打印querySt

答案 2 :(得分:0)

据我所知,代码获取URL的查询字符串部分

例如:http://domain.com?querystparam1=somwthing&querystringparam2=somethingeles ....

查询字符串部分是?querystparam1 = somwthing&amp; querystringparam2 = somethingeles

hu包含除问号标志外的所有内容.. 然后由&amp;分裂创建的数组en签名,然后遍历数组并搜索koko并返回koko的值。