2011-10-27 134 views
33

我已經嘗試使用console.log,以便可以看到包含多個對象的數組的內容。不過,我得到一個錯誤說的console.log不使用jQuery 1.6.2對象等Im和我的數組是這樣的:console.log顯示數組對象的內容

filters = {dvals:[{'brand':'1', 'count':'1'}, 
        {'brand':'2', 'count':'2'}, 
        {'brand':'3', 'count':'3'}]} 

console.log(filters); 

我想要做的就是寫出來的數組的內容(什麼過濾器)到過濾器格式的警告框(多數民衆贊成我認爲console.log做)。我怎麼做?

+7

你使用什麼瀏覽器? 'console'對象僅在某些瀏覽器或附加組件上可用 – Phil

+0

您使用的瀏覽器是什麼? – chustar

+0

適用於我:http://jsfiddle.net/PxZjr/ –

回答

7

console.log不會產生任何消息框。我不認爲它是在任何版本的IE瀏覽器(也不是Firefox)上沒有添加螢火蟲或一些等價物。

然而,它在Safari和Chrome中可用。既然你提到Chrome,我會用我的例子。

您需要打開窗口及其開發者窗口對應部分。您可以通過右鍵單擊頁面上的任何元素並選擇「檢查元素」來完成此操作。你的窗口將分爲兩部分,開發人員部分是底部。在兩部分之間的區分是帶按鈕的欄,最右邊的按鈕標有「控制檯」。您需要點擊該按鈕才能切換到控制檯選項卡。不幸的是,我不知道如何通過鍵盤在鉻上到達那裏。 (在Mac OS X上的Safari瀏覽器,它的命令+ Shift + I)

一旦出現,您將可以通過該控制檯中的JavaScript通過JavaScript加載頂端的任何頁面,並且您將顯示任何消息console.log

+0

您需要(安裝並)激活IE Developer Tools調試器。只需轉到網頁進行調試,然後按F12按鈕即可激活調試器。這定義了您在代碼中使用的控制檯。 – GuruM

+0

@GuruM:這不會只寫出對象,不會像FireFox或Chrome中那樣寫對象的內容。 –

+0

@NeilKnight。提問者可以使用本頁其他地方指定的技術來查看。我只是通知他如何激活IE調試器。 Kris沒有提到如何讓IE在IE中打開調試器,所以填補了空白。 – GuruM

1

看起來像Firebug或任何您正在使用的調試器,沒有正確初始化。你確定Firebug在你試圖訪問console.log()方法時被完全初始化了嗎?檢查控制檯標籤(如果它被設置爲激活)。

另一種可能性是,您可以自己在代碼中的任何位置覆蓋控制檯對象。

+0

在IE8和谷歌瀏覽器中使用cosole.log我沒有得到任何結果是它在我使用的瀏覽器中的一些設置。 – ONYX

+0

@KDM - console.log消息將顯示在IE開發工具調試器中的「腳本」選項卡的「控制檯」右側窗口中。您需要訪問要調試的網頁,按F12鍵激活調試器。選擇「開始調試」,然後選擇「腳本」選項卡。運行腳本以查看「控制檯」窗口中的日誌消息。 – GuruM

1

Json代表JavaScript Object Notation確實所有json都是javascript對象,所以你的數組已經是json形式。寫出來的一個div你可以做的我覺得這是一個最簡單的一堆東西:

objectDiv.innerHTML = filter; 

其中objectDiv是你想要從DOM中使用jQuery選擇的股利。如果要列舉了陣列出來的部分,你可以訪問它們,因爲它是一個JavaScript對象,像這樣:

objectDiv.innerHTML = filter.dvals.valueToDisplay; //brand or count depending. 

編輯:任何你想要的是一個字符串,但目前不是(這是罕見的JavaScript對待幾乎一切都以字符串形式)只需使用內置的toString()函數。如上圖所示,如果需要,可以使用filter.dvals.valueToDisplay.toString();

第二次編輯以澄清:此答案是對OP的評論的迴應,並非完全針對他的原始問題。

4

console對象可在Internet Explorer 8中或更高版本,但只有當你按F12 通過菜單打開開發人員工具窗口。

即使再次關閉「開發人員工具」窗口直到關閉IE,它仍然可用。

Chorme和Opera始終有一個可用的console,至少在當前版本中。使用Firebug時,Firefox有一個console,但它也可能提供一個沒有Firebug的。

在任何情況下,它都是使用console輸出可選的保存方法。這裏有一些如何做到這一點的例子:

if (console) { 
    console.log('Hello World!'); 
} 

if (console) console.debug('value of someVar: ' + someVar); 
41

有兩種潛在的簡單的解決方案來轉儲數組作爲字符串。根據您所使用的環境:

...隨着現代瀏覽器都使用JSON:

JSON.stringify(filters); 
// returns this 
"{"dvals":[{"brand":"1","count":"1"},{"brand":"2","count":"2"},{"brand":"3","count":"3"}]}" 

...的東西,如Node.js的,你可以使用console.info()

console.info(filters); 
// will output: 
{ dvals: 
[ { brand: '1', count: '1' }, 
    { brand: '2', count: '2' }, 
    { brand: '3', count: '3' } ] } 

編輯:

JSON.stringify帶有兩個可選參數。第三個「空間」參數使漂亮的印刷:

JSON.stringify(
       obj,  // the object to stringify 
       replacer, // a function or array transforming the result 
       spaces // prettyprint indentation spaces 
      ) 

例如:

JSON.stringify(filters, null, " "); 
// returns this 
"{ 
"dvals": [ 
    { 
    "brand": "1", 
    "count": "1" 
    }, 
    { 
    "brand": "2", 
    "count": "2" 
    }, 
    { 
    "brand": "3", 
    "count": "3" 
    } 
] 
}" 
+0

我建議有人在未來版本的Javascript中修復它,並使對象默認自動轉換爲合理的字符串表示。可能沒有人想看到Object [Object]。 – osa

1

我熱烈推薦這個片段,以確保,不小心留下的代碼碎片不會對客戶端的瀏覽器失敗:

/* neutralize absence of firebug */ 
if ((typeof console) !== 'object' || (typeof console.info) !== 'function') { 
    window.console = {}; 
    window.console.info = window.console.log = window.console.warn = function(msg) {}; 
    window.console.trace = window.console.error = window.console.assert = function(msg) {}; 
} 

而不是定義一個空的函數,這個片段也是一個很好的起點,如果需要的話滾動自己的控制檯代理,也就是將這些信息轉儲到.debug容器中,顯示警報(可以獲得很多)或者這樣...

如果你確實使用firefox +螢火蟲,console.dir()最適合傾倒數組輸出,see here

1

在Javascript中將對象打印到控制檯很簡單。只需使用以下語法:

console.log(object); 

console.log('object: %O', object); 

我認爲說這種記錄語句只能在瀏覽器環境中是很重要的。我在Google Chrome中使用了這個功能。您可以在開發者控制檯中查看console.log調用的輸出:右鍵單擊網頁中的任何元素並選擇「檢查」以打開它。選擇標籤'控制檯'。