奇怪的Javascript / jQuery问题 - 分配和读取值

时间:2017-01-12 15:05:58

标签: javascript jquery html query-string

我已经和jQuery一起工作了2年了,我知道这很简单,我之前做过很多次,但由于某些原因,我似乎无法让它在今天工作,所以我在这里发帖这是我的Javascript代码剪辑:

(function () {

        // checking for query strings
        var vars = [], hash;
        var q = document.URL.split('?')[1];
        if (q != undefined) {
            q = q.split('&');
            for (var i = 0; i < q.length; i++) {
                hash = q[i].split('=');
                vars.push(hash[1]);
                vars[hash[0]] = hash[1];
            }
        }
        // end query string check

        // using query strings above to perform operations
        if (typeof (vars['grade']) != "undefined") {
            alert(vars['grade']);
            $('#divGrade').html(vars['grade']);
        }

        alert($('#divGrade').html());

    })();

我在页面上有一个div标签: <div id="divGrade" ></div>

,查询字符串为:default.html?grade=0

javascript读取等级,即0,然后使用“alert”将其显示给用户,然后将其分配给div标签。当试图提醒用户div标签的html时,它是“未定义的”。

我一直在盯着这个,我知道我正在做的事情是愚蠢的。关于它可能是什么的任何想法?

3 个答案:

答案 0 :(得分:0)

// checking for query strings 
var vars = {},
  hash;
var q = document.URL.split('?')[1];
if (q != undefined) {
  q = q.split('&');
  for (var i = 0; i < q.length; i++) {
    hash = q[i].split('=');
    vars[hash[0]] = hash[1];
  }
}

Vars["grade"]要求vars是一个对象而不是一个数组。对象没有推送功能。

答案 1 :(得分:0)

问题是。

1:您正在尝试在vars上使用对象Bracket表示法,但它是一个Array。将其更改为对象。

&#13;
&#13;
(function() {

  // checking for query strings
  var url = "default.html?grade=0";
  var vars = {},
    hash;
  var q = url.split('?')[1];
  if (q != undefined) {

  
      q = q.split('&');

      for (var i = 0; i < q.length; i++) {
        hash = q[i].split('=');
         
         vars[hash[0]] = hash[1];
      }
  }
  // end query string check

  // using query strings above to perform operations
  if (typeof(vars['grade']) != "undefined") {
    alert(vars['grade']);
    $('#divGrade').html(vars['grade']);
  }

  alert($('#divGrade').html());

})();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="divGrade"></div>
&#13;
&#13;
&#13;

答案 2 :(得分:-1)

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("button").click(function(){
        $("input:text").val("Glenn Quagmire");
    });

   $('#myselect').change(function() {
            alert($(this).val());
      });
});
</script>
</head>
<body>

<p>Name: <input type="text" name="user"></p>

<button>Set the value of the input field</button>


<select id="myselect">
    <option value="1">Hello</option>
    <option value="2">Ram</option>
    <option value="3">david</option>
    <option value="4">Scott</option>
    <option value="5">Prof</option>
</select>

enter code here

</body>
</html>