变量值正在打印'[object object]'

时间:2015-08-16 16:42:01

标签: javascript

我正在使用下面的脚本从我的网址中获取值并在输入字段中显示该值。

var QueryString = function () {
  // This function is anonymous, is executed immediately and 
  // the return value is assigned to QueryString!
  var query_string = {};
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
        // If first entry with this name
    if (typeof query_string[pair[0]] === "undefined") {
      query_string[pair[0]] = decodeURIComponent(pair[1]);
        // If second entry with this name
    } else if (typeof query_string[pair[0]] === "string") {
      var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
      query_string[pair[0]] = arr;
        // If third or later entry with this name
    } else {
      query_string[pair[0]].push(decodeURIComponent(pair[1]));
    }
  } 
    return query_string;
}();

document.addEventListener("DOMContentLoaded", function() {
    document.getElementById("field34").value = QueryString;
}, false);

出于某种原因,当我的变量QueryString打印到屏幕时,它会在我的输入字段中显示:

[object Object]

然而,当我在console.log那个变量时,我得到了这个:

console.log(QueryString)
undefined
Object { value: "YX57WDL" }

我想在屏幕上打印它的价值。

知道为什么会这样吗?

谢谢,尼克

2 个答案:

答案 0 :(得分:2)

为您的变量QueryString分配了一个对象。将对象分配给DOM元素的属性时,该对象将转换为字符串。

在JavaScript中,只要将对象强制转换为字符串,就会调用其.toString()方法。默认情况下,它返回[object Object]

如果您想要对象的另一个字符串表示形式,您可以覆盖其.toString()方法或通过手动构造字符串来避免隐式强制转换,例如使用JSON.stringify()

答案 1 :(得分:1)

你可以按如下方式打印:

QueryString.value