Tag: JavaScript

为什么要避免在JavaScript中增加(“++”)和减少(“ – ”)运算符?

jslint工具的技巧之一是: ++和 – 已知++(增量)和(减量)运算符通过鼓励过度的技巧来促成不良代码。 它们仅次于有缺陷的体系结构,从而使病毒和其他安全威胁成为可能。 有一个plusplus选项禁止使用这些操作符。 我知道像$foo[$bar++]这样的PHP结构很容易导致错误,但是我找不到一个更好的方式来控制循环while( a < 10 ) do { /* foo */ a++; } while( a < 10 ) do { /* foo */ a++; }或for (var i=0; i<10; i++) { /* foo */ } 。 jslint是否突出显示它们是因为有一些类似的语言缺少“ ++ ”和“ — ”语法或者以不同的方式处理它,或者是否有其他的理由来避免我可能会丢失的“ ++ ”和“ — ” ?

如何显示过滤后的重复数据的长度

我有一个包含许多对象(JSON格式)的数据数组。 以下内容可以作为这个数组的内容: var data = [ { "name": "Jim", "age" : 25 }, { "name": "Jerry", "age": 27 } ]; 现在,我将这些细节显示为: <div ng-repeat="person in data | filter: query"> </div 在这里,查询被建模为用户可以限制显示数据的输入字段。 现在,我有另一个位置显示当前显示的人数/ Showing {{data.length}} Persons ,即Showing {{data.length}} Persons 我想要做的是,当用户搜索一个人,并显示的数据基于查询过滤时, Showing…persons也改变当前Showing…persons的价值。 但是这并没有发生。 它始终显示数据中的总人数而不是过滤的数据 – 如何获得过滤的数据的数量?

对象数组中的indexOf方法?

获取包含对象的数组的索引的最佳方法是什么? 想象一下这个场景: var hello = { hello: 'world', foo: 'bar' }; var qaz = { hello: 'stevie', foo: 'baz' } var myArray = []; myArray.push(hello,qaz); 现在我想要有一个indexOf对象,其中hello属性是'stevie' ,在这个例子中,它将是1 。 我是JavaScript的新手,我不知道是否有一个简单的方法,或者如果我应该建立自己的功能来做到这一点。

jQuery禁用/启用提交按钮

我有这个HTML: <input type="text" name="textField" /> <input type="submit" value="send" /> 我该如何做这样的事情: 当文本字段为空时,应该禁用提交(disabled =“disabled”)。 当在文本字段中输入某些内容以删除禁用的属性时。 如果文本字段再次变空(文本被删除),则应该再次禁用提交按钮。 我尝试了这样的事情: $(document).ready(function(){ $('input[type="submit"]').attr('disabled','disabled'); $('input[type="text"]').change(function(){ if($(this).val != ''){ $('input[type="submit"]').removeAttr('disabled'); } }); }); …但它不工作。 有任何想法吗? 谢谢。

使用原型的优点,vs直接在构造函数中定义方法?

我想知道是否有任何其他的优势,我应该走哪条路? 构造方法: var Class = function () { this.calc = function (a, b) { return a + b; }; }; 原型方法: var Class = function () {}; Class.prototype.calc = function (a, b) { return a + b; }; 我不喜欢这样,使用原型,方法定义是从类中分离出来的,我不知道是否有任何特定的原因,我应该只用第一种方法。 另外,是否有利用函数文字来定义一个“类”,而不仅仅是函数定义: var Class = function () {}; VS function Class () {}; 谢谢!

最简单/最干净的方式来实现JavaScript中的单身人士?

在JavaScript中实现单例模式的最简单/最简单的方法是什么?

使用AngularJS的ng选项来处理select

我已经在其他文章中读过,但我无法弄清楚。 我有一个数组, $scope.items = [ {ID: '000001', Title: 'Chicago'}, {ID: '000002', Title: 'New York'}, {ID: '000003', Title: 'Washington'}, ]; 我想把它渲染为: <select> <option value="000001">Chicago</option> <option value="000002">New York</option> <option value="000003">Washington</option> </select> 而且我想选择ID = 000002的选项。 我已阅读选择和尝试,但我无法弄清楚。

iOS 6上的Safari缓存$ .ajax结果吗?

自升级到iOS 6以来,我们看到Safari的Web视图冒险缓存$.ajax调用。 这是在PhoneGap应用程序的上下文中,因此它使用Safari WebView。 我们的$.ajax调用是POST方法,我们将缓存设置为false {cache:false} ,但仍然发生这种情况。 我们尝试手动添加TimeStamp到标题,但没有帮助。 我们做了更多的研究,发现Safari只是返回具有静态功能签名的Web服务的缓存结果,并且不会因呼叫而改变。 例如,想象一个叫做如下的函数: getNewRecordID(intRecordType) 这个函数一次又一次地接收相同的输入参数,但是它返回的数据应该每次都不一样。 必须在苹果急于使iOS 6 zip令人印象深刻,他们对缓存设置太高兴了。 有没有其他人在iOS 6上看到这种行为? 如果是这样,究竟是什么原因造成的呢? 我们找到的解决方法是修改函数签名是这样的: getNewRecordID(intRecordType, strTimestamp) 然后总是传递一个TimeStamp参数,并在服务器端丢弃该值。 这可以解决这个问题。 我希望这能帮助像我这样在这个问题上花费15个小时的其他可怜的灵魂!

原型为数组的Javascript对象成员将被所有类实例共享

有没有人注意过这种行为? 这真的把我扔了…我会希望原型数组是专用于每个类实例,而不是在所有类实例之间共享。 有人可以验证这是正确的行为,也许更详细地解释这种行为? 注意注释代码以及它如何影响脚本的行为。 <html> <head> <script type="text/javascript"> function print_r( title, object ) { var output = ''; for( var key in object ) { output += key + ": " + object[ key ] + "\n"; } output = title + "\n\n" + output; alert( output ); } function Sandwich() { // Uncomment this […]

为什么在使用setTimeout时立即执行该方法?

我试图用setTimeout编写一个简单的代码,setTimeout不会等待它假设的时间,并立即执行代码。 我究竟做错了什么? $("#btn1").click(function () { if ("something") { $("#div1").slideUp(); setTimeout(testfunction(), 2000); } }