1

私はいくつかの 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

4 に答える 4

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のテキストになります。optionoption

次に、上記のような「整数」値は実際には整数ではなく、文字列です。そのため、数学に使用する前に解析する必要があります。以下の簡単なウォークスルーでは、選択した値を取得し、それを整数に解析するプロセスについて説明します。熱心に読んでください。多くの混乱が解消されると思います。

// 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

于 2012-05-17T19:56:54.327 に答える
2

JSON.stringify()関数を使用して、オブジェクトを JSON 文字列として出力します

于 2012-05-17T19:56:27.143 に答える
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;
    }
于 2012-05-17T20:07:18.220 に答える
-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を返します。これにより、コードを修正することができます。

于 2012-05-17T20:01:30.393 に答える