小编Jon*_*tes的帖子

为什么我不能向引用Itself的集合中的每个元素添加事件,而不是"for(){}"语句中的最后一个元素

Window的负荷,每一个DD元素中Quote_App应该有一个onCLick触发功能追加事件Lorem,然而,Lorem返回nodeNameId在最后一个元素的For声明,而不是该触发功能的元素.我想要Lorem返回触发该函数的元素nodeNameId.

function Lorem(Control){

/*     this.Control=Control; */
    this.Amet=function(){
        return Control.nodeName+"\n"+Control.id;
    };

};

function Event(Mode,Function,Event,Element,Capture_or_Bubble){
    if(Mode.toLowerCase()!="remove"){
        if(Element.addEventListener){
            if(!Capture_or_Bubble){
                Capture_or_Bubble=false;
            }else{
                if(Capture_or_Bubble.toLowerCase()!="true"){
                    Capture_or_Bubble=false;
                }else{
                    Capture_or_Bubble=true;
                };
            };
            Element.addEventListener(Event,Function,Capture_or_Bubble);
        }else{
            Element.attachEvent("on"+Event,Function);
        };
    };
};

function Controls(){
    var Controls=document.getElementById("Quote_App").getElementsByTagName("dd");
    for(var i=0;i<Controls.length;i++){

        var Control=Controls[i];

        Event("add",function(){

            var lorem=new Lorem(Control);
            lorem.Control=Control;
            alert(lorem.Amet());

        },"click",Controls[i]);

    };
};

Event("add",Controls,"load",window);
Run Code Online (Sandbox Code Playgroud)

目前你点击任何DD元素Lorem总是返回nodeNameId …

javascript foreach addeventlistener getelementsbytagname

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

在js库中$ .something(object)如何也是$("something")(一个函数)?

这可能是一个简单的问题,有一个非常复杂的答案,或者我刚刚完全错过的非常简单的东西,但是,在像Prototype和jQuery等库中,$全局变量如何才能成为包含函数的对象,例:

$.ajax.get(…);
Run Code Online (Sandbox Code Playgroud)

还有一个功能本身,如:

$("…");
Run Code Online (Sandbox Code Playgroud)

任何帮助,甚至是指向更具说明性的网站的指针都会非常棒,我只是好奇!

例如,如果我创建了一个function($),它包含一个子对象(ajax),如:

var $ = function() {
    this.ajax = {};
    return this;
}; 
Run Code Online (Sandbox Code Playgroud)

我可以访问这个ajax对象$().ajax,但不喜欢$.ajax,你怎么得到它们?

javascript function object libraries

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

如果行中的其他单元格与值匹配,则将单元格从一个工作表复制到另一个工作表

我想要的是将单元格从一张纸复制到另一张纸,前提是同一行(不同列)中的另一个单元格在 Google 表格中具有特定值。

\n\n

理想情况下,我希望这是实时的;如果我在第一张表中添加一行并且条件匹配,第二张表也会更新。这是一个例子:

\n\n
Sheet one\n\nColumn A | Column(s)\xe2\x80\xa6  | Column D\n=================================\nHello    |             | Yes\nWorld!   |             | Yes\nFoo      |             | Maybe\nBar      |             |\n\nSheet two\n\nColumn A | Column(s)\xe2\x80\xa6  | Column D\n=================================\nHello    |             |\nWorld!   |             |\nFoo      |             |\n         |             |\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,在此示例中,我的标准是,如果 中 的行单元格Column D等于YesMaybe,则该行的单元格 中Column A被复制到第二个工作表中。

\n

copy google-sheets google-sheets-query

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

Angular 2中的Import语句顺序

角度样式指南说明了导入行间距:

  • 考虑在第三方导入和应用程序导入之间留一个空行.
  • 考虑列出模块按字母顺序排列的导入行.
  • 考虑按字母顺序列出破坏的导入符号.
  • 为什么?空行将你的东西与他们的东西分开.
  • 为什么?字母顺序使读取和定位符号更容易.

看看很多Angular项目,包括Angular本身,惯例是首先导入Angular(@angular)模块,然后导入第三方模块(例如AngularFire2),然后导入我们自己的模块(服务,组件等),例如./some-service.ts.

再次看起来导入服务,然后是模型然后导入组件是惯例.

但接口和管道等呢?导入"无名"或通配符模块的惯例是什么,例如Firebase SDK或RxJs运算符?

例如:

导入RxJs运算符的示例服务

import { Injectable } from '@angular/core';

import { AngularFireAuth } from 'angularfire2/auth';
import {
  AngularFireDatabase,
  FirebaseListObservable
} from 'angularfire2/database';
import * as firebase from 'firebase/app';
import 'rxjs/add/operator/take';
...
Run Code Online (Sandbox Code Playgroud)

要么

import { Injectable } from '@angular/core';

import {
  AngularFireDatabase,
  FirebaseListObservable
} from 'angularfire2/database';
import * as firebase from 'firebase/app';
import { Observable } from 'rxjs/Observable';

import { AuthService } from './auth.service';
// `GridMetadata` is an …
Run Code Online (Sandbox Code Playgroud)

convention angular

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

更快$ foo?$ foo:'bar'

一行代码说了很多话:

$foo = false;
$bar = $foo ? $foo : 'bar';
/* $bar == 'bar' */

$foo = 'foo';
$bar = $foo ? $foo : 'bar';
/* $bar == 'foo' */
Run Code Online (Sandbox Code Playgroud)

有没有更快的方式说"如果某些东西不是假的,那么就不要改变它(如果$foo不是false那么它会保持不变,否则,我们会改变它")?

php ternary-operator

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

Angular2 单元测试不使用模拟服务

我正在测试一个非常简单的组件,它显示/隐藏登录/退出按钮。

\n\n

为此,我嘲笑我的AuthService服务,因为它依赖于 AngularFire2。

\n\n

我遇到的问题是,似乎Mock AuthService没有提供我的模拟服务 () 来代替实际的AuthService.

\n\n

在测试中should show the Facebook login buttonservice.isAnonymous预计是未定义的。实际服务中确实如此。但在模拟服务中是true。这个测试应该会失败。

\n\n

另外,请注意我正在尝试调用该方法service.test(false);;在模拟服务中,此方法存在并且是public。但我收到错误:

\n\n
\n

类型“AuthService”上不存在属性“test”。

\n
\n\n

这表明我的模拟服务没有被提供。

\n\n

您可以在我的测试规范中看到我如何尝试两种方式来提供模拟服务(其中一种已被注释掉):

\n\n
import { DebugElement } from '@angular/core';\nimport {\n  async,\n  inject,\n  ComponentFixture,\n  TestBed\n} from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\n\nimport { FacebookLoginComponent } from './facebook-login.component';\nimport { AuthService } from '../shared/auth.service';\nimport { MockAuthService } from '../shared/testing/auth.service';\n\ndescribe('FacebookLoginComponent', () => {\n  let …
Run Code Online (Sandbox Code Playgroud)

unit-testing karma-jasmine angular

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

是否有比没有else子句的if语句更优雅的解决方案?

在下面的代码中,if Control(trigers Toggle的第一个元素OL)不是Visible它应该被设置Visible而所有其他Controls(Controls[i])都是这样Hidden.

.js文件

function Toggle(Control){
    var Controls=document.getElementsByTagName("ol",document.getElementById("Quote_App"));
    var Control=Control.getElementsByTagName("ol")[0];
    if(Control.style.visibility!="visible"){
        for(var i=0;i<Controls.length;i++){
            if(Controls[i]!=Control){

                Reveal("hide",20,0.3,Controls[i]);

            }else{

                Reveal("show",20,0.3,Control);

            };
        };
    }else{

        Reveal("hide",20,0.3,Control);

    };
};
Run Code Online (Sandbox Code Playgroud)

虽然函数[ Toggle]工作正常,但实际上它已设置Controls[i]Hidden即使已经存在.

通过添加If如下代码中的语句可以很容易地解决这个问题,肯定有一个更优雅的解决方案,可能是一个复杂的If条件?

.js文件

function Toggle(Control){
    var Controls=document.getElementsByTagName("ol",document.getElementById("Quote_App"));
    var Control=Control.getElementsByTagName("ol")[0];
    if(Control.style.visibility!="visible"){
        for(var i=0;i<Controls.length;i++){
            if(Controls[i]!=Control){

if(Controls[i].style.visibility=="visible"){

                Reveal("hide",20,0.3,Controls[i]);

};

            }else{

                Reveal("show",20,0.3,Control);

            };
        };
    }else{

        Reveal("hide",20,0.3,Control);

    };
};
Run Code Online (Sandbox Code Playgroud)

始终感谢您的帮助.

javascript if-statement

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