0

ユーザーが入力フィールドにテキストを入力し、そのボタンをクリックして「評価」ボタンをクリックするようにします。入力されたテキストをJavaScriptオブジェクトに変換し、すべてのメンバー(プロパティと関数)を表示します。

たとえば、ユーザーが"document"or I を入力すると、 and"window"のすべてのメンバーがそれぞれ表示されます。documentwindow

オブジェクトのメンバーの反復処理は完了しましたが、ユーザーが入力テキスト フィールドにテキストを入力し、その値が文字列として扱われるよりもそのテキストを取得すると、もちろんそのテキストを"document"todocument"window"to window???のようなオブジェクトに変換するにはどうすればよいですか?

4

4 に答える 4

3

「評価」を使用できます。 編集:ここではevalが不要であることを指摘してくれた @Victor と @Cerbrus のコメントに感謝します。も使用できますwindow[input]

var input = "document";
var obj = eval(input);
for (var prop in obj) console.log(prop + ": " + obj[prop]);

別のオブジェクト (つまり、グローバル オブジェクト) のメンバーである場合は、ブラケット表記を使用できます。

var hello = "world";
var variableName = "hello";
console.log(JSON.stringify(window[variableName]));
于 2012-11-21T07:45:03.243 に答える
1

提案された解決策は、サブプロパティ (例: window.document.body) では機能しません。ほとんどの場合に機能する小さな jsFiddle を作成しました。確かに実際のエラーチェックが欠けていますが、 http://jsfiddle.net/a6A4m/1/を開始するには適切な場所になるはずです

 var showProperties = function(text) {
        var output = '';
        var object = window;

        // if it isn't the global window object
        if (text !== 'window') {
            var parts = text.split('.');

            // Since we're using pop, we need to reverse it first.
            parts = parts.reverse();

            while (parts.length > 0) {
                object = object[parts.pop()];
            }
        }

        $('#content').html(getOutput(object));
    };
于 2012-11-21T08:23:38.893 に答える
0

文字列がJSON形式の場合、または文字列がjavascriptオブジェクトの名前である場合、ここでjQuery.parseJSONが文字列をオブジェクトに変換するのを見た方法です。

var s2o = (new Function("return " +val+";"))();

valにテキスト入力からの値が含まれているとします。

これは、Functionオブジェクトを「コンパイラ」として使用するようなもので、javascriptオブジェクトが返されます。

ユーザーがドキュメントを渡すと、documentオブジェクトが渡されます。
ユーザーが{id:1、name: "test"}を渡すと、そのオブジェクトが渡されます。

于 2012-11-21T18:59:42.777 に答える
0

そのような入力値を取得する場合

var selector = $('input').val();

次に、オブジェクトは

$(selector)
于 2012-11-21T07:48:04.120 に答える