2010-09-18 118 views
3

我有一個對象如何打印javascript對象?

var object= {} 

我把一些數據的對象,然後我想打印它像這樣

document.write(object.term); 

期限是根據不同的情況改變的變量。當我嘗試打印它時,它會出現未定義的。

它會怎麼做?

更新:

這是我正在處理的代碼。我想這可能與我上面所說的不一樣,因爲我在使用browsermob的selenium中完成它,我只是認爲它與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); 

} 
+1

請添加更多的代碼。也許錯誤在於完整的代碼。 – 2010-09-18 19:41:27

+0

你想如何輸出? 'console.log'工作嗎? – 2010-09-18 19:41:29

+1

您可以添加一些代碼,顯示何時「將某些數據放入對象中」? – 2010-09-18 19:41:34

回答

3

編輯:您使用兩個不同的變量名,flashflashcards。我不知道它們是否意味着是同一件事,但你是設置該值使用[]表示法,然後變得它使用.表示法。

嘗試:

var flash = {}; 

... 

flash[terms] = defs; 

browserMob.log(flash[terms]); 

如果term是代表您要檢索的屬性變量,那麼你應該用方括號從對象獲取屬性。

例子:http://jsfiddle.net/xbMjc/(使用警報,而不是文件撰寫)

var object= {}; 

object.someProperty = 'some value'; 

var term = "someProperty"; 

document.write(object[term]); // will output 'some value' 
+0

嗯..我以爲我這樣做,但它不起作用 – chromedude 2010-09-18 19:49:19

+0

@chromedude - 你有兩個不同的變量名稱。 'flashcards'和'flash'。 – user113716 2010-09-18 19:49:47

+0

o對不起,是的,他們都應該是閃光燈,我會改變 – chromedude 2010-09-18 19:53:59

3

如果您使用的是document.write(),那麼很有可能在實例化之前嘗試引用該對象。我的建議:不要使用document.write(),除非你在模板中需要它。對於所有其他目的,請等待頁面加載,然後將腳本作爲事件處理程序運行。

可能還有其他原因導致失敗,但您的代碼示例不夠完整,無法進行診斷。

+0

。我認爲它有點不同 – chromedude 2010-09-18 19:48:16

1
  • 避免使用document.write

  • 如果你使用Firefox,安裝螢火蟲和使用它的console api

  • 相同的控制檯apis也應該在chrome中工作。

  • 對於IE,得到companion js

  • 在JavaScript中,如果屬性名手之前已知的使用obj.propertyname。如果不是,那麼:

如果pn包含屬性名稱,obj [pn]應該爲您提供值。

2

要輸出的整個對象作爲文本,使用JSON library

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

0

那麼Firefox和Chrome瀏覽器/ Safari瀏覽器,你可以簡單地使用...

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

,控制檯也將輸出類似「對象」

如果您在Chrome中,你可以檢查內部使用內置的開發人員控制檯,輕鬆實現對象的值。

如果你使用Firefox的輸出應該出來螢火蟲,以及...

我指出這是使用document.write的替代,因爲它似乎有點侵入到我的輸出內容上該文件...