2011-04-22 85 views
31

我试图进行调试,但遇到问题。现在我试着用alert()。例如,我想看到的值:如何使用警报查看对象()

var product = { ProductName: $('!Answer_Response[0]').val(), 
        UnitPrice: $('#Price').val(), 
        Stock: $('#Stock').val() 
       }; 

当我说alert(product)它只是给我[object Object]。我怎样才能让警报显示真正存在的内容?

+1

:想像它在一个更好的方式,你可以使用,等等。日志(产品),这将显示你的对象在浏览器的开发工具,如firefox中的萤火虫。 – 2011-04-22 09:09:44

+0

可能重复[如何显示JavaScript对象?](http://stackoverflow.com/questions/957537/how-can-i-display-a-javascript-object) – 2015-04-19 09:26:27

回答

61

可以使用在现代浏览器找到并json2.js提供的JSON.stringify()方法。

var myObj = {"myProp":"Hello"}; 
alert (JSON.stringify(myObj)); // alerts {"myProp":"Hello"}; 

还要检查这个库:http://devpro.it/JSON/files/JSON-js.html

+0

哪个不会给你属性的真实值 – KooiInc 2011-04-22 09:26:48

+0

@KooiInc你是什么意思?这对我来说工作得很好。 – spiel 2014-02-26 14:50:48

+4

@spiel:它给你*字符串表示*使用Javascript对象表示法。这在这里可能就足够了,但如果实例包含方法(函数),它们将不会显示。 – KooiInc 2014-02-26 14:57:37

0
alert (product.UnitName + " " + product.UnitPrice + " " + product.Stock) 

否则你的对象上创建一个toString()方法,并调用

alert(product.toString()) 

但我与其他海报同意 - 如果调试你会因为那时萤火虫或F12上IE9或Chrome使用的console.log是去

4

如果你想轻松地查看对象的内容,同时调试,安装工具,如Firebug用方式console.log

console.log(product); 

如果你想查看的对象本身的属性,不alert的对象,但其属性:

alert(product.ProductName); 
alert(product.UnitPrice); 
// etc... (or combine them) 

至于说,如果你真的想提高你的JavaScript调试,使用Firefox与Firebug插件。你会想知道你以前如何调试你的代码。

+0

谢谢。我现在添加了萤火虫。控制台输出是好的,但我可以做更多吗?我可以通过代码或看到我的JavaScript? – Melova1985 2011-04-22 09:29:44

+0

@Melova当然可以。阅读Firebug文档,因为这是一个太宽泛的主题,无法在此讨论。 – 2011-04-22 09:38:58

+0

谢谢。我会做的。祝你有美好的一天。 – Melova1985 2011-04-22 09:40:38

2

这是我用:

var result = []; 
for (var l in someObject){ 
    if (someObject.hasOwnProperty(l){ 
    result.push(l+': '+someObject[l]); 
    } 
} 
alert(result.join('\n')); 

如果你想显示嵌套对象太多,你可以使用的东西递归:

function alertObject(obj){ 
var result = []; 
function traverse(obj){ 
for (var l in obj){ 
    if (obj.hasOwnProperty(l)){ 
    if (obj[l] instanceof Object){ 
     result.push(l+'=>[object]'); 
     traverse(obj[l]); 
    } else { 
     result.push(l+': '+obj[l]); 
    } 
    } 
    } 
} 
traverse(obj); 
return result; 
} 
2

你真的应该使用Firebug或WebKit的控制台进行调试。然后你可以做console.debug(product);并检查对象。

0

根据其属性,你感兴趣的是:

alert(product.ProductName); 
alert(product.UnitPrice); 
alert(product.Stock); 
0
alert(JSON.stringify(product)); 
11

可以使用toSource方法这样

alert(product.toSource()); 
+1

谢谢。正是我需要的 – 2013-04-12 15:36:27

+2

它适用于FF而不适用于Chrome。改用JSON.stringify。 – JalalJaberi 2014-07-20 23:21:39

0

使用JavaScript本地JSON.stringify方法。如果你想检查的任何对象使用控制台JSON.stringify(obj,null, 4)

var obj = {data:[{"empmenuid":"1","empid":null,"deptid":"66","aliasid":"66","firstname":"66","lastname":"66","sin":"66","status":"66","empclass":"66","hiredate":"66","seneoritydate":"66","separationdate":"66"},{"empmenuid":"3","empid":null,"deptid":"12","aliasid":"12","firstname":"12","lastname":"12","sin":"12","status":"12","empclass":"12","hiredate":"12","seneoritydate":"12","separationdate":"12","recalldate":"12","martialstatus":"12","gender":"12","pager":"12","locid":"12","jobtitle":"12","jobtitlestart":"12","fullpart":"12","manager":"12","managername":"12","middlename":"12","nickname":"12","paytype":"12","payfreq":"12"}], 
 
recordType : 'object'}; 
 

 
alert(JSON.stringify(obj,null, 4));