3

私はオブジェクトを持っています

var object= {}

オブジェクトにデータを入れてから、このように印刷したい

document.write(object.term);

この用語は、さまざまな状況に応じて変化する変数です。これを印刷しようとすると、未定義になります。

それはどのように行われますか?

アップデート:

これは私が扱っているコードです。私はブラウザモブを使ってセレンでやっているので、おそらく上で言ったことと同じではないと思います.document.write()に似ていると思っただけです。ここにコードがあります

var numCardsStr = selenium.getText("//div[@id='set-middle']/div[2]/h2");

var numCards = numCardsStr.substr(4,2); 

browserMob.log(numCards);

var flash = {}

for(i=0; i<(numCards); i++){

var terms = selenium.getText("//div[@id='words-normal']/table/tbody/tr[" + (i + 2) + "]/td[1]");
var defs = selenium.getText("//div[@id='words-normal']/table/tbody/tr[" + (i + 2) + "]/td[2]");

flash[terms] = defs;

browserMob.log(flash.terms);

}
4

6 に答える 6

3

document.write() を使用している場合、インスタンス化される前にオブジェクトを参照しようとしている可能性が高くなります。私のアドバイス: テンプレートで必要でない限り、 document.write() を使用しないでください。他のすべての目的では、ページが読み込まれるまで待ってから、スクリプトをイベント ハンドラーとして実行します。

失敗には他の理由が考えられますが、コード サンプルは診断に十分ではありません。

于 2010-09-18T19:41:03.783 に答える
3

編集: 2 つの異なる変数名を使用していflashますflashcards。それらが同じことを意図しているかどうかはわかりませんが、表記法を使用して値を設定[]し、表記法を使用して取得.しています。

試す:

var flash = {};

...

flash[terms] = defs;

browserMob.log(flash[terms]);

termが取得するプロパティを表す変数である場合、オブジェクトからプロパティを取得するために角括弧表記を使用する必要があります。

例: http://jsfiddle.net/xbMjc/ (document.write の代わりにアラートを使用)

var object= {};

object.someProperty = 'some value';

var term = "someProperty";

document.write( object[term] );  // will output 'some value'
于 2010-09-18T19:42:23.610 に答える
2

オブジェクト全体をテキストとして出力するには、JSONライブラリを使用します。

<script type="text/javascript" src="http://www.JSON.org/json2.js"></script>

var o = { "term": "value" };
document.write(JSON.stringify(o, null, 4));

これにより、オブジェクトが文字列として出力され、読みやすくするために4つのスペースがインデントされます。


あなたがすることはこれです:

var terms = "abcd";
var defs = "1234";
var flash = {};
flash[terms] = defs;

これにより、次のオブジェクトが作成されます。

{
    "abcd": "1234"
}

プロパティ(つまり「abce」)を確認する場合は、次のようにします。

for (var key in flash) {
    document.write('Key "' + key + '" has value "' + flash[key] + '"<br/>');
}

これは出力します:

Key "abcd" has value "1234"
于 2010-09-18T19:51:20.547 に答える
1

私はこれがまだ言及されていないので:

var a = {prop1:Math.random(), prop2:'lol'};
a.toString = function() {
    output = [];
    for(var name in this) if(this.hasOwnProperty(name) && name != 'toString') {
        output.push([name, this[name]].join(':'));
    }
    return "{\n"+output.join(",\n\t")+"\n}";
};
document.write(a);

// should look like:
/*
    {
        prop1:0.12134432,
        prop2:lol
    }
*/

次のようなオブジェクトクラスを定義している場合MyObj:

var MyObj = function(id) {
    this.someIdentity = id;
};
MyObj.prototype.toString = function() {
    return '<MyObject:'+this.someIdentity+'>';
};

そして、あなたが何かを書くときはいつでも

document.write(new MyObject(2));

のように表示され<MyObject: 2>ます。

于 2010-09-18T19:58:50.587 に答える
1
  • document.write を避ける

  • Firefox を使用している場合は、firebug をインストールして、そのコンソール APIを使用します。

  • 同じコンソール API が chrome でも動作するはずです。

  • IE の場合は、コンパニオン jsを取得します

  • JavaScript では、プロパティ名が事前にわかっている場合は obj.propertyname が使用されます。そうでない場合は、次のようになります。

pn にプロパティ名が含まれている場合、obj[pn] は値を提供する必要があります。

于 2010-09-18T19:44:18.423 に答える
0

Firefox と Chrome/Safari では、簡単に使用できます...

var myObj = {id: 1, name: 'Some Name'};
window.console.log(myObj);

そして、コンソールは「オブジェクト」のようなものを出力します

Chrome を使用している場合は、組み込みの開発者コンソールを使用して、オブジェクトの内部値を簡単に調べることができます。

Firefox を使用している場合、出力は firebug からも出力されるはずです...

document.write を使用する代わりにこれを述べています。これは、ドキュメントにコンテンツを出力するのが少し侵襲的であるように思われるためです...

于 2010-09-19T03:50:33.067 に答える