小编sli*_*khi的帖子

用jQuery引用立即选择器对象?

我正在尝试学习一些jQuery,并使用以下代码设置测试页面:

<a id='encode' href='javascript: void(0)'>encode</a> |  
<a id='decode' href='javascript: void(0)'>decode</a> | 
<br/>
<textarea id='randomString' cols='100' rows='5'></textarea>

<script type='text/javascript'>
$(document.ready(function () {
  $('#encode').click(function() {
    $('#randomString').val(escape($('#randomString').val()));
  });
  $('#decode').click(function() {
    $('#randomString').val(unescape($('#randomString').val()));
  });     
});
</script>
Run Code Online (Sandbox Code Playgroud)

我的想法是我可以在textarea中放置一些东西,然后点击"编码"或"解码",它将要么逃避或者忽略我放入textarea的东西.

这段代码工作正常,但我的问题与我如何更改textarea的值有关.在我的代码中,我选择了两次textarea值:一次(un)转义它,再一次改变值.IMO这看起来很笨拙,也许没必要.我想也许我可以这样做:

$('#randomString').val(escape(this));
Run Code Online (Sandbox Code Playgroud)

this似乎是指我点击的链接的对象,而不是#randomString选择器,所以是否有一些其他可以用来引用它的魔术词$('#randomString')

javascript jquery

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

单击链接时,javascript获取href

这是我的情况.我在整个网站上都有一些链接.其中一些看起来像这样:

<a target="_blank" onclick="someFunction()" href="/somFile.pdf">some file</a>

有些看起来像这样:

<a target="_blank" href="/somFile.pdf">some file</a>

所有链接都应该在单击时调用someFunction().在onclick属性中具有调用的是旧内容页面.较新的页面附加了一个jQuery click事件,如下所示:

$(document).ready(function(){
  $('a[href$=".pdf"]').click(function() {
    someFunction();
  });
});
Run Code Online (Sandbox Code Playgroud)

所以这就是事情.我可以更新someFunction(),但我无法触及实际链接或jQuery.我需要知道点击链接的href值.我尝试在someFunction()中使用以下内容:

var ev = window.event;
origEl = ev.target || ev.srcElement;
console.log(origEl.href);
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我也尝试过console.log(window.event)什么也没得到,说这是未定义的.知道我在这里缺少什么,或者在调用函数时没有传递引用它基本上是不可能的?

编辑:要清楚,我不能作为短期甚至中期的解决方案编辑someFunction()onclick或jQuery代码中的调用黑色,所以我不能将它们更改为someFunction(this)或类似.我不确定是否有可能从someFunction()中获取href,除非我这样做:(

javascript onclick

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

javascript - 如何不通过引用分配

好的,考虑一下这段代码:

var d1 = new Date();
var d2 = d1;

d2.setDate(d2.getDate()+1);
alert(d1 + "\n" + d2);
Run Code Online (Sandbox Code Playgroud)

即使我叫setDate()d2,d1也正在增加.我理解这是因为d1是d2通过引用分配的.我的问题是......我怎么不这样做,所以.setDate()只适用于d2

javascript reference

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

javascript html5 使用来自不同域的图像绘制图像

所以我有以下代码:

var element = document.getElementById("myCanvas");
var width = element.width;                                   
var height = element.height;  
var context = element.getContext("2d");                      

/* test 1 */
var img1 = new Image(width, height);
img1.src = "http://www.mydomain.com/image.jpg";

document.body.appendChild(img1);          // <-- A: this works 
context.drawImage(img1,0,0,width,height); // <-- B: this works

/* test 2 */
var img2 = new Image(width, height);
img2.src = "http://www.notmydomain.com/image.jpg";

document.body.appendChild(img2);          // <-- C: this works 
context.drawImage(img2,0,0,width,height); // <-- D: this does not work
Run Code Online (Sandbox Code Playgroud)

好的,看看我的代码,test 1我创建了一个图像对象,其中包含与我的页面托管在同一域上的图片。从A:我可以看到它加载得很好(A:并且C:只是作为测试扔进去以确保 img …

html javascript xss canvas image-processing

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

javascript - 在函数上使用.apply的问题

好的,所以我有一个对象,我想将回调函数应用于对象中的所有方法.这是我到目前为止所尝试的:

var namespace = { 
  foo : 'bar', 
  foobar :  function() { console.log('call from foobar!')},
  someFunc : function() { console.log('call from someFunc!')},
  someFunc2 : function() { console.log('call from someFunc2!')}
}

var logger = {
  _callback : function () {
    console.log('call from logger!',arguments);
  }
}

for (var m in namespace) { 
  if ( namespace.hasOwnProperty(m) && (typeof namespace[m]=='function') ) {
    logger[m] = namespace[m];
    namespace[m] = function() {
      logger._callback(arguments);
      logger[m].apply(this, arguments);
    }
  }
}

namespace.foobar('foo');
namespace.someFunc('bar');
namespace.someFunc2('bar2');
Run Code Online (Sandbox Code Playgroud)

这是登录到控制台的内容:

call from logger! [["foo"]]
call …
Run Code Online (Sandbox Code Playgroud)

javascript

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

perl regex将所有匹配放入包括完全匹配的数组中

我有以下perl代码:

use Data::Dumper;
$key = 'foobar:foo:bar';
$pattern = '^[^:]+:([a-z]{3}):(.+)$';
my @matches = $key =~ /$pattern/i;
print Dumper(@matches);
Run Code Online (Sandbox Code Playgroud)

输出:

$VAR1 = 'foo';
$VAR2 = 'bar';
Run Code Online (Sandbox Code Playgroud)

或者我可以print $1为第一个捕获组,$2第二个.

我想知道的是如何获得完整的模式匹配.例如,如果我使用PHP preg_match,我会得到这个:

Array
(
    [0] => foobar:foo:bar
    [1] => foo
    [2] => bar
)
Run Code Online (Sandbox Code Playgroud)

第一个元素(或$ 0或\ 0)是完全匹配的位置.我如何在Perl中获得这个?

regex perl

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

计算一套纸牌的卡数

背景故事:

所以我的儿子随机向我走来,询问如何编写一个代数(?)表达式来计算根据指定的级别数量制作一套纸牌所需的卡数.我很确定这实际上不是一个家庭作业问题; 如果他需要帮助,他通常会向我展示工作表.

"假设"就是这样

a)每层之间都有水平放置的卡片,用于支撑; 一张卡片作为两个"峰值"之间的"桥梁"b)最低(地平面)层下面没有任何水平卡片,因为地板/桌子本身就是支撑物.

例如,单个图层只有2张卡片: /\

另一个例子:3层共有15张卡(请原谅我糟糕的图片!)

   /_\
 /_\ /_\
/ \/ \/ \
Run Code Online (Sandbox Code Playgroud)

嗯,我在这种事情上很糟糕.我只知道基本代数,但我想认为自己是一个相当不错的(但不是"专业")程序员.但无论如何,对于一个纯粹的代数公式,我无法提出计算所有卡的公式,但我确实想出了一个公式来计算给定图层的卡数,基于以上假设:2v + (v - 1)

好吧,可能有一个更好/简化的方程式,而且,这仅适用于给定的层,而不是所有层.因此,例如第1层(顶层),v = 1,因此卡的数量为2.或者对于第3层,v = 3,因此卡的数量达到8(因此该公式计算水平支撑作为给定图层的一部分).

而且......就像我用纯代数一样.然而!使用一些计算机代码(javascript是我使用的),我能够根据上面的等式创建一个函数,以返回卡的数量:

function getNumHouseCards(layers) {
    var layers = layers || 1;
    var cards = 0;
    for (var v = 1; v <= layers; v++) {
        cards += (2 * v) + (v - 1);
    }
    return cards;
}
Run Code Online (Sandbox Code Playgroud)

与功能的返回值相比,我做了一些手动计数卡,这看起来是合法的,所以我应该感到高兴,但是......我觉得这可以做得更好.所以..

题:

如何改进?我想首先,没有办法用代数表达式来编写这个,或者编码真的需要回答这样的事情?在任何一种情况下,我都觉得我已经过度复杂了(好吧,至少我做过的部分......)

javascript algebra

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

标签 统计

javascript ×6

algebra ×1

canvas ×1

html ×1

image-processing ×1

jquery ×1

onclick ×1

perl ×1

reference ×1

regex ×1

xss ×1