是否有Java等效的Java的deepToString()?

时间:2012-05-17 19:52:40

标签: javascript arrays

我正在调试一些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方式'解码'这个对象变量的想法,以便我可以看到实际里面有什么?

由于

4 个答案:

答案 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.这样可以帮助您解决我们的代码问题