小编Ert*_*ohl的帖子

在javascript中,定义函数内联与将其作为引用传递的权衡是什么?

所以,假设我有一大堆元素,我想要附加事件监听器.例如,我希望每行在单击时变为红色的表格.

所以我的问题是哪一个是最快的,哪个使用最少的内存.我明白这是(通常)权衡,所以我想知道每个人的最佳选择.

使用表示例,假设有一个所有行元素的列表,"rowList":

选项1:

for(var r in rowList){
     rowList[r].onclick = function(){ this.style.backgroundColor = "red" };
}
Run Code Online (Sandbox Code Playgroud)

我的直觉是这是最快的,因为只有少一个指针调用,但是内存最多,因为每个行列表都有自己的函数副本,如果onclick函数很大,这可能会很严重.

选项2:

function turnRed(){
     this.style.backgroundColor = "red";
}
for(var r in rowList){
     rowList[r].onclick = turnRed;
}
Run Code Online (Sandbox Code Playgroud)

我猜这将比上面的那个慢一点(哦不,再多一个指针取消引用!)但内存密集程度要低得多,因为浏览器只需要跟踪函数的一个副本.

选项3:

var turnRed = function(){
     this.style.backgroundColor = "red";
}
for(var r in rowList){
     rowList[r].onclick = turnRed;
}
Run Code Online (Sandbox Code Playgroud)

我认为这与选项2相同,但我只是想把它扔出去.对于那些想知道这和选项2之间的区别是什么:定义函数的JavaScript差异

奖金部分:Jquery

同样的问题:

$('tr').click(function(){this.style.backgroundColor = "red"});
Run Code Online (Sandbox Code Playgroud)

与:

function turnRed(){this.style.backgroundColor = "red"};
$('tr').click(turnRed);
Run Code Online (Sandbox Code Playgroud)

和:

var turnRed = function(){this.style.backgroundColor = "red"};
$('tr').click(turnRed);
Run Code Online (Sandbox Code Playgroud)

javascript function-pointers

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

IE9中的Heisenbug

好的StackOverflow - 这是一个奇怪的.

问题

所以我有一个"按钮"(实际上只是一个带有javascript onclick监听器的div),它通过页面加载时的json从数据库中获取文本.(鉴于申请,这是有道理的).我们不支持IE <9.

问题是div中的文本没有出现在IE9的新实例中.但是,当我打开开发人员控制台(试图弄清楚出了什么问题)并刷新页面时,IE就好像什么都没有出错并正确填充按钮文本.它适用于所有其他浏览器.

什么.

代码

这就是我在PHP中所拥有的:

<div class="dark-button notification-button" data-notification="NOTIF_A">
    <span class="float-right">&#9654;</span>
</div>
Run Code Online (Sandbox Code Playgroud)

Javascript(使用Jquery 1.8.0):

$('document').ready(refreshNotificationButtons('.notification-button'));
function refreshNotificationButtons(buttons){
    var buttons = typeof buttons != 'object' ? $('.notification-button') : buttons;
    var allNotifications = {};
    var buttonsCount = 0;
    buttons.each(function(){
        var button = $(this);
        if(typeof button.attr('id') == 'undefined') button.attr('id', 'notif-button-' + buttonsCount);
        buttonsCount ++;
        if(typeof allNotifications[button.attr('data-notification')] == 'undefined'){
            allNotifications[button.attr('data-notification')] = [button.attr('id')];
        } else {
            allNotifications[button.attr('data-notification')].push(button.attr('id'))
        }
    });
    $.get(
        '/notifications/get_notifications/' + $.map(allNotifications, function(x, abbr){return abbr}).join(','),
        '',
        function(data){
            $(data).each(function(){ …
Run Code Online (Sandbox Code Playgroud)

php jquery html5 internet-explorer-9

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

在 Google 电子表格中划分整列

我是 Google 电子表格的新用户。

我希望 «B» 列中的每个单元格都是 «A» 列(在同一行)中但除以 5 的结果。

B1、B2、B3 等(商)应为 A1、A2、A3 等(被除数)除以 5(除数)。

例如:B1 = (A1)/5

我知道一一执行的公式是将 ie 放置=DIVIDE(A1,5)在 B1 单元格中,然后放置=DIVIDE(A2,5)在 B2 单元格中,等等——但这会像手动计算每个单元格一样复杂。

目标是自动填写A[*same row number*]/5( B[*same row number*]) 列中( )的商。

但是,我如何将我对 [相同行号] 的要求翻译/替换为 Google 电子表格理解的语言或公式,因为我猜有一个公式可以解决这个问题?

excel google-sheets

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

Jquery字符串过滤

我正在做一些花哨的js片段来自动将文本框的值复制到后面的跨度中.

<input name="data[ask_admin_name]" onkeyup=
    "$("#admin_name").html($(this).val())"
type="text" id="ask_admin_name">
Run Code Online (Sandbox Code Playgroud)

然后,

<span id="admin_name"></span>
Run Code Online (Sandbox Code Playgroud)

什么是最快的,最简单,最jQuery的-EST的方式来去除HTML相关的标记出这一点,喜欢<>

我可以使用更多的js行来做,但我想知道这个任务是否有特定的功能,例如,$(this).val().strip('<>');

javascript string jquery

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

Javascript Prototype需要.prototype.为什么?

我有一些代码作为我正在进行的javascript周末项目的一部分.我的问题在最后一行.据我所知,我应该可以打电话Floater.create()而不必打电话Floater.prototype.create().为什么我需要额外的.prototype?没有它,会抛出错误:Floater() has no method "create"

function Floater(){}

Floater.prototype.create = function(){
    //do stuff
}

$(document).ready(function(){
    //do stuff
    runStartup();
});

function runStartup(){
    loginFloater = new Floater;
    Floater.prototype.create();
    // as far as I know, this should run as just Floater.create(),
    // but that throws an error.
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery prototype

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

在Scala中解析字符串到关联数组的更好方法?

我目前有以下哪些有用,但我对Scala很新,我想知道是否有更好的方法.

val utmcsr = """.*utmcsr=(.*)""".r
val utmcmd = """.*utmcmd=(.*)""".r
val utmccn = """.*utmccn=(.*)""".r
val utmctr = """.*utmctr=(.*)""".r

val utmz = "14002953.138298057.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)"
utmz.split("""\|""").map {
        case utmcsr(s) => List("utmscr", s)
        case utmcmd(s) => List("utmcmd", s)
        case utmccn(s) => List("utmccn", s)
        case utmctr(s) => List("utmctr", s)
        case _ => ""
    }.foldLeft(Map[String,String]()) {
        (m, s) => 
            val key = s.asInstanceOf[List[String]].head
            val value = s.asInstanceOf[List[String]].tail.head
            m + (key -> value)
    }
}
Run Code Online (Sandbox Code Playgroud)

我的主要问题是:

  1. 为什么我需要解析s作为List的实例 - 它不应该已经是一个列表吗?
  2. 有没有办法用元组而不是列表来做到这一点?
  3. 是否有内置的方法来进行映射转换?

scala

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