我使用下面的脚本从我的 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/