如何以易于阅读(针对人类读者)格式显示JSON?我主要是寻找缩进和空白,甚至可能是颜色/字体样式等.
如何以字符串格式显示JavaScript对象的内容,就像我们alert
变量一样?
我希望显示对象的格式相同的方式.
我目前正在阅读Trevor Burnham的Async Javascript.到目前为止,这是一本很棒的书.
他谈到这个片段和console.log在Safari和Chrome控制台中是"异步"的.不幸的是我不能复制这个.这是代码:
var obj = {};
console.log(obj);
obj.foo = 'bar';
// my outcome: Object{}; 'bar';
// The book outcome: {foo:bar};
Run Code Online (Sandbox Code Playgroud)
如果这是异步,我会预期结果将成为书籍的结果.console.log()被放入事件队列中,直到执行完所有代码,然后运行它并具有bar属性.
虽然它正在同步运行但它似乎出现了.
我运行此代码错了吗?console.log实际上是异步吗?
我使用其自定义窗口小部件框架创建了NVD3图表到Eclipse-RAP的集成.图表生成为div.通过在javascript中创建链接条目来动态加载CSS.我通过创建SVG /文本元素来检查CSS是否已经加载,并检查它font-size
是否正常(请参阅/sf/answers/559839731/).如果加载了CSS,我会创建图表.
出于某种原因,Chrome中的图表不会始终正确呈现.通常在我的会话中第一次正确显示,但第二次呈现总是错误的.对于错误的情况,我在控制台中找到了这个:
Error: Invalid value for <g> attribute transform="translate(NaN,5)"
Run Code Online (Sandbox Code Playgroud)
如果我重绘图表(例如通过更新图表数据或调整大小),则会正确呈现图例.
预期:
错误的布局:
经过一些调试后,我找到了相关的d3代码部分.NVD3使用此函数请求SVG Text元素的字体大小:
d3_selectionPrototype.style = function(name, value, priority) {
var n = arguments.length;
if (n < 3) {
if (typeof name !== "string") {
if (n < 2) value = "";
for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
return this;
}
if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name);
priority = "";
}
return this.each(d3_selection_style(name, value, priority));
};
Run Code Online (Sandbox Code Playgroud)
相关的CSS部分是这样的:
svg text {
font: …
Run Code Online (Sandbox Code Playgroud) 我理解这段代码.我们制作A的副本并将其称为C.当A被更改时,C保持不变
var A = 1;
var C = A;
console.log(C); // 1
A++;
console.log(C); // 1
Run Code Online (Sandbox Code Playgroud)
但是当A是阵列时,我们会有不同的情况.C不仅会改变,而且会在我们触及A之前发生变化
var A = [2, 1];
var C = A;
console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]
Run Code Online (Sandbox Code Playgroud)
有人可以解释第二个例子中发生的事情吗?
我目前正在忙着写一个javascript库.在那个库中,我想提供一些关于控制台内容的日志.
function log () {
if ((window && typeof (window.console) === "undefined") || !enableLogging) {
return false;
}
function currentTime() {
var time = new Date();
return time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds() + '.' + time.getMilliseconds();
}
var args = [];
args.push(currentTime());
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
switch (arguments[0]) {
case severity.exception:
if (window.console.exception) {
window.console.exception.apply(console, args);
} else {
window.console.error.apply(console, args);
}
break;
case severity.error:
window.console.error.apply(console, args);
break; …
Run Code Online (Sandbox Code Playgroud) 看到这个jsbin在哪里,为了回答另一个问题,我构建了一个类似数组的对象:
function myCollection() {
var items = [], r = {}
function myPush(value){
value += 'bar'
r[items.length]=value;
items.push(value)
}
Object.defineProperty(r, "splice", {value:[].splice});
Object.defineProperty(r, "slice", {value:[].slice});
Object.defineProperty(r, "length", {
get : function(){ return items.length}
});
Object.defineProperty(r, "myPush", {value:myPush});
return r;
}
var fooCollection = myCollection();
fooCollection.myPush('foo');
console.log(fooCollection); // logs ["foobar"]
fooCollection.myPush('Ba');
console.log(fooCollection); // logs ["foobar", "Babar"]
fooCollection.myPush('wzouing');
console.log(fooCollection.slice(-2)); //logs ["Babar", "wzouingbar"]
console.log(fooCollection[1]); // logs Babar
Run Code Online (Sandbox Code Playgroud)
如果你在控制台打开的情况下点击Chromium上的Run with JS按钮,你会得到:
非常奇怪的是,如果你在控制台关闭时按下按钮就可以得到这个(当然你在重新打开控制台后看到它):
这是一个已知的错误吗?一项功能 ?灰色地带?有解决方法吗?
*注意:有时候,在Chrome/linux(而不是Chromium)上,我得到的东西更奇怪:关闭并重新打开控制台时,现有日志会发生变化.它们可以从阵列形式转变为折叠形式.*
我正在为Angular使用ui路由器并尝试获取当前状态的名称.
经过3天的工作,我发现当我使用templateUrl时它是空的.将其更改为模板后:'test',状态名称神奇地出现......
它可以使它工作吗? 这是演示
Code on above link
Run Code Online (Sandbox Code Playgroud) 我试图通过 id 在我的网站中找到一个 div,但是当我从 window.onload 调用 getElementById 时,我得到了一个 null 返回。我已经验证我正在寻找的元素存在并且它没有与任何其他元素共享 Id。
奇怪的是,当我从 chrome 的开发人员工具运行控制台命令时,div 会按原样返回。
我在 JSFiddle 上提供了一个简化版本的链接,以及我正在尝试的内容的简要展示,并希望您能提供任何意见。
<script>
var hasElement = document.getElementById('someId');
alert(hasElement);
</script>
<div id="someId">true</div>
Run Code Online (Sandbox Code Playgroud)
这可能是 JS Fiddle 的问题,但我正在使用它console.log()
来打印对象集合的值。
首先,我用一些数据(一些对象)初始化对象集合并在控制台记录它。
然后我用一些新数据更新这个集合并控制台记录它。
发生的情况是第一个和第二个控制台日志都是相同的,即使对象数据已更改。我想知道这是一个错误,还是我做错了什么。
http://jsfiddle.net/n302nsbh/18/
function FooManager() {
this.objects = {};
this.update = function(data) {
var self = this;
$.each(data, function(i, e) {
var foo = self.objects[i];
if (typeof foo === "undefined") {
foo = new Foo(e);
self.objects[i] = foo;
} else if (foo instanceof Foo) {
foo.update(e);
}
});
}
return this;
}
function Foo(data) {
this.name = data.name;
this.age = data.age;
return this;
}
Foo.prototype.update = function(data) {
this.name = data.name;
this.age = …
Run Code Online (Sandbox Code Playgroud) 我正在使用一个语言文件来存储jquery datepicker URL的traductions:http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/i18n/jquery-ui-i18n.min.js ? ver = 3.4.2
返回jQuery.datepicker.regional对象,我想访问该对象的it(意大利语)属性.我的问题是,当我做类似的事情
console.log(jQuery.datepicker.regional['it'])
Run Code Online (Sandbox Code Playgroud)
要么
console.log(jQuery.datepicker.regional.it)
Run Code Online (Sandbox Code Playgroud)
控制台说对象未定义.
但当我做类似的事情时:
console.log(jQuery.datepicker.regional);
Run Code Online (Sandbox Code Playgroud)
控制台返回如下内容:
[Object]
: Object
af: Object
ar: Object
...
it: Object
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?"it"对象有没有呢?如何访问jQuery.datepicker.regional对象的"it"对象?
谢谢
javascript ×9
angularjs ×1
asynchronous ×1
css ×1
d3.js ×1
html ×1
json ×1
memory-leaks ×1
nvd3.js ×1
pretty-print ×1
state ×1
svg ×1
variables ×1