我正在调试一些javascript,并继续使用javascript [object]
(例如,当我显示带有值的警报时,它显示为[object]
或NaN
)。我正在尝试阅读此对象的内容。我知道在Java中,这对deepToString();
来说是一个完美的工作吗?有没有相当于该方法的javascript?
以下是生成上述对象的代码......
e = document.getElementById("contServer"); // contServer is an integer variable
var valueCS = parseInt(e.options[e.selectedIndex].value);
//Value CS is a four-byte variable calculated from e
任何关于javascript方式'解码'这个对象变量的想法,以便我可以看到实际里面有什么?
由于
答案 0 :(得分:3)
使用select
元素时似乎有些混乱。
确保您有正确的标记:
<select id="contServer">
<option value="0">Zero</option>
<option value="10">Ten</option>
<option value="100" selected>Hundred</option>
<option value="1000">Thousand</option>
</select>
我们将值存储在value
元素的option
属性中。如果该属性不存在,则value
将是开头option
标记和结束option
标记的文本。
接下来,像上面那样的“整数”值实际上并不是整数 - 它们是字符串。因此,在将它们用于任何数学之前必须对它们进行解析。在下面的简短演练中,我将解释抓取所选值并将其解析为整数的过程。请仔细阅读,我认为这将消除很多困惑:
// We now have a reference to the select object (with all of its object members)
var cServer = document.getElementById("contServer");
// Now we have a reference to all of the options within the select object
var options = cServer.options;
// Now a reference to the selected option
var selected = options[ cServer.selectedIndex ];
// And now the value of the selected option
var selValue = selected.value;
// Let's get the type of this value
var selType = typeof selValue;
// Convert this String to an Integer
var iSelType = parseInt( selType, 10 );
// We can also get the value from the select object itself
var cServerVal = cServer.value;
// But we would still need to parse it to an integer
var iCServerVal = parseInt( cServerVal, 10 );
我相信NaN
的问题来自于尝试解析非数值。例如,我们尝试将一个单词解析为整数:
parseInt( "Hundred" );
结果将为NaN
。这很可能发生在你身上。确保将数字存储在option
标记之间,或value
标记中每个option
属性中。
答案 1 :(得分:2)
使用JSON.stringify()函数将对象输出为JSON字符串
答案 2 :(得分:1)
JavaScript中没有内置的“对象转储器”。正如其他人所说,一种快速简便的方法是JSON.stringify()
。如果你想要一些品种和踢它老学校......你可以使用for (var key in obj) {}
的递归函数。
我在JS工具箱中随身携带这样的东西......
var MAX_DUMP_DEPTH = 10;
function dumpObj(obj, name, indent, depth) {
if (depth > MAX_DUMP_DEPTH) {
return indent + name + ": Over Max Depth\n";
}
if (typeof obj == "object") {
var child = null;
var output = indent + name + "\n";
indent += "\t";
for (var item in obj) {
try {
child = obj[item];
} catch (e) {
child = "wtf was that?";
}
if (typeof child == "object") {
output += dumpObj(child, item, indent, depth + 1);
} else {
output += indent + item + ": " + child + "\n";
}
}
return output;
} else {
return obj;
}
答案 3 :(得分:-1)
好看,看看原来的html代码
<select id="contServer" name="contServer">
<option valueCS=1000>Up</option>
<option valueCS=0>Down</option>
</select>
这是无效的html,下面是一个选项应该是什么样子
<option selected="selected" value="1000">Up</option>
如果你做同样的代码,这将返回1000,这是值属性
如果你有类似下面的内容
<option selected="selected" value="0">1000</option>
您的代码将返回0,因为值设置为0.这样可以帮助您解决我们的代码问题