javascript - 变量值正在打印 '[ object Object]'

标签 javascript

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

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" }

其中包含我想打印到屏幕上的值。

知道为什么会发生这种情况吗?

谢谢,尼克

最佳答案

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

在 JavaScript 中,每当一个对象被转换为字符串时,它的 .toString()方法被调用。默认情况下它返回[object Object]

如果您想要为对象使用其他字符串表示形式,您可以重写其 .toString() 方法,或者通过手动构造字符串来避免隐式转换,例如使用 JSON.stringify() .

关于javascript - 变量值正在打印 '[ object Object]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32037522/

相关文章:

javascript - Angular2 - NgModule 之外的组件注入(inject)

javascript - 如何从外部 JavaScript 调用 Haxe 编译的 JS?

javascript - 如何在 iOS 上仅将 javascript 函数定位到 safari < 6.0

javascript - 如何在 riot-lol-api npm 包中使用缓存?

javascript - JQuery json.filter 两个条件

javascript - 推特 Bootstrap : Popover and Auto Refresh

php - 使用 Zend Framework 应用程序将 subview 加载到 IFrame 中

javascript - 如果 Symfony 中的表单无效,如何调用 javascript 函数

javascript - 在 React 和 JSX 中使用度数符号

javascript - 为什么 ng-app 不是 ng-module?