相关疑难解决方法(0)

如何使用JavaScript漂亮地打印JSON?

如何以易于阅读(针对人类读者)格式显示JSON?我主要是寻找缩进和空白,甚至可能是颜色/字体样式等.

javascript json pretty-print

2222
推荐指数
21
解决办法
93万
查看次数

如何显示JavaScript对象?

如何以字符串格式显示JavaScript对象的内容,就像我们alert变量一样?

我希望显示对象的格式相同的方式.

javascript javascript-objects

1520
推荐指数
27
解决办法
167万
查看次数

console.log()异步还是同步?

我目前正在阅读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实际上是异步吗?

javascript asynchronous

72
推荐指数
1
解决办法
3万
查看次数

NVD3图表无法计算Chrome中的图例文本长度,因为Window.getComputedStyle没有正确返回font-size

背景资料

我使用其自定义窗口小部件框架创建了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)

javascript css svg d3.js nvd3.js

49
推荐指数
1
解决办法
2073
查看次数

console.log()在值实际更改之前显示变量的更改值

我理解这段代码.我们制作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 variables google-chrome

43
推荐指数
4
解决办法
3万
查看次数

记录复杂对象时内存泄漏

我目前正在忙着写一个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)

javascript memory-leaks

8
推荐指数
1
解决办法
5425
查看次数

如果控制台已关闭,则类似数组的对象和数组不会像数组一样记录

看到这个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)上,我得到的东西更奇怪:关闭并重新打开控制台时,现有日志会发生变化.它们可以从阵列形式转变为折叠形式.*

javascript google-chrome

8
推荐指数
1
解决办法
400
查看次数

AngularJS UI路由器 - 使用templateUrl时$ state.current.name为空

我正在为Angular使用ui路由器并尝试获取当前状态的名称.

经过3天的工作,我发现当我使用templateUrl时它是空的.将其更改为模板后:'test',状态名称神奇地出现......

它可以使它工作吗? 这是演示

Code on above link
Run Code Online (Sandbox Code Playgroud)

state angularjs angular-ui-router

7
推荐指数
1
解决办法
7685
查看次数

GetElementById 在使用 window.onload 时返回 null,但在从控制台运行时不返回

我试图通过 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)

http://jsfiddle.net/ph9Nc/2/

html javascript

5
推荐指数
2
解决办法
1万
查看次数

Javascript 控制台日志报告对象属性不正确

这可能是 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)

javascript

3
推荐指数
1
解决办法
142
查看次数

Javascript:如何访问对象中的对象

我正在使用一个语言文件来存储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-objects jquery-ui-datepicker

2
推荐指数
1
解决办法
600
查看次数