Tag: JavaScript

可变的咖喱和函数

我需要一个js总和函数来这样工作: sum(1)(2) = 3 sum(1)(2)(3) = 6 sum(1)(2)(3)(4) = 10 etc. 我听说不能做到。 但是听说如果在前面加上+就可以了。 像+sum(1)(2)(3)(4) 。 任何想法如何做到这一点?

Uncaught ReferenceError:函数没有用onclick定义

我正在尝试为网站添加自定义表情 。 不过,我得到了很多错误。 这是function: function saveEmotes() { removeLineBreaks(); EmoteNameLines = EmoteName.value.split("\n"); EmoteURLLines = EmoteURL.value.split("\n"); EmoteUsageLines = EmoteUsage.value.split("\n"); if (EmoteNameLines.length == EmoteURLLines.length && EmoteURLLines.length == EmoteUsageLines.length) { for (i = 0; i < EmoteURLLines.length; i++) { if (checkIMG(EmoteURLLines[i])) { localStorage.setItem("nameEmotes", JSON.stringify(EmoteNameLines)); localStorage.setItem("urlEmotes", JSON.stringify(EmoteURLLines)); localStorage.setItem("usageEmotes", JSON.stringify(EmoteUsageLines)); if (i == 0) { console.log(resetSlot()); } emoteTab[2].innerHTML += '<span style="cursor:pointer;" […]

新的date()在Chrome和Firefox中的工作方式不同

我想通过JavaScript将datestring转换为Date ,使用下面的代码: var date = new Date('2013-02-27T17:00:00'); alert(date); '2013-02-27T17:00:00'是来自服务器的JSON对象中的UTC时间。 但是Firefox和Chrome上面代码的结果是不一样的: Firefox返回: Wed Feb 27 2013 17:00:00 GMT+0700 (SE Asia Standard Time) Chrome返回: Thu Feb 28 2013 00:00:00 GMT+0700 (SE Asia Standard Time) 这是不同的一天,我期望正确的结果是从Chrome的结果。 演示代码: http : //jsfiddle.net/xHtqa/2/ 我怎样才能解决这个问题,以获得相同的结果?

variables提升

alert(myVar1); return false; var myVar1; 以上代码在IE,FF和Opera中抛出错误,说明返回语句必须在函数中。 但它在Safari和Chrome中起作用(显示undefined )。 上面的代码已经在全球范围内编写了。 除了所有的function。 任何原因?

内存泄漏风险在JavaScriptclosures

解决了 关于这个问题,networking上有很多矛盾的信息。 感谢@John,我设法解决了closures(如下面所使用的)不是内存泄漏的原因,即使在IE8中,它们也不像人们声称的那样常见。 事实上,在我的代码中只发生了一次泄漏,事实certificate这并不难解决。 从现在起,我对这个问题的回答是: AFAIK,唯一一次IE8泄漏,是事件被附加/处理程序设置在全局对象上。 ( window.onload , window.onbeforeunload ,…)。 为了解决这个问题,请参阅下面的答案。 巨大的更新: 我现在完全失去了…经过一段时间的挖掘,新旧文章,我留下了至less一个巨大的矛盾。 虽然JavaScript大师之一(道格拉斯·克罗克福德)说: 由于IE无法完成工作并回收周期,因此我们需要这样做。 如果我们明确地打破周期,那么IE将能够回收内存。 据微软称,closures是导致内存泄漏的原因。 这当然是非常错误的,但是这会导致微软给程序员提出非常糟糕的build议,说明如何应对微软的错误。 事实certificate,很容易打破在DOM方面的周期。 在JScript方面几乎是不可能的。 正如@freakish指出,我的下面的代码片段类似于jQuery的内部工作,我觉得我的解决scheme非常安全,不会导致内存泄漏。 同时,我find了这个MSDN页面 ,其中“ Circular References with Closures ”一节对我特别感兴趣。 下图几乎是我的代码如何工作的示意图,是不是: 唯一的区别是,我没有把我的事件监听器附加到元素本身的常识。 所有相同的Douggie是非常明确的:闭包不是IE中的mem漏洞的来源。 这个矛盾让我无法确定谁是对的。 我也发现泄漏问题在IE9中也没有完全解决(无法find链接ATM)。 最后一件事 :我也学会了IE在JScript引擎之外pipe理DOM,当我根据ajax请求更改<select>元素的子元素时,这让我有点麻烦: function changeSeason(e) { var xhr,sendVal,targetID; e = e || window.event;//(IE… targetID = this.id.replace(/commonSourceFragment/,'commonTargetFragment');//fooHomeSelect -> barHomeSelect sendVal = this.options[this.selectedIndex].innerHTML.trim().substring(0,1); xhr […]

跨浏览器的Javascript XMLparsing

有什么跨浏览器/跨平台的方式来parsingJavaScript文件中的XML文件?

使用JavaScript执行特定延迟后的脚本

有没有JavaScript的方法类似于jQuery的delay()或wait() (延迟脚本的执行一段特定的时间)?

我可以在javascript中转义html特殊字符吗?

我想通过javascript函数向HTML显示文本。 如何在JS中转义html特殊字符? 有没有API?

当http:// localhost是原点时致命的CORS

我坚持这个CORS问题,即使我设置服务器(nginx / node.js)与适当的标题。 我可以在Chromenetworking窗格中看到 – > Response Headers: Access-Control-Allow-Origin:http://localhost 这应该做的伎俩。 这里是我现在用来testing的代码: var xhr = new XMLHttpRequest(); xhr.onload = function() { console.log('xhr loaded'); }; xhr.open('GET', 'http://stackoverflow.com/'); xhr.send(); 我明白了 XMLHttpRequest cannot load http://stackoverflow.com/. Origin http://localhost is not allowed by Access-Control-Allow-Origin. 我怀疑这是客户端脚本中的问题,而不是服务器configuration…

是否有可能发送一个可变数量的参数到JavaScript函数?

是否有可能从一个数组发送可变数量的参数到JavaScript函数? var arr = ['a','b','c'] var func = function() { // debug alert(arguments.length); // for(arg in arguments) alert(arg); } func('a','b','c','d'); // prints 4 which is what I want, then 'a','b','c','d' func(arr); // prints 1, then 'Array' 我最近写了很多Python,能够接受可变参数并发送它们是一个非常好的模式。 例如 def func(*args): print len(args) for i in args: print i func('a','b','c','d'); // prints 4 which is what […]