Tag: JavaScript

在JavaScript中的for循环中调用一个asynchronous函数

我有以下代码: for(var i = 0; i < list.length; i++){ mc_cli.get(list[i], function(err, response) { do_something(i); }); } mc_cli是到memcached数据库的连接。 正如你可以想象的那样,callback函数是asynchronous的,因此可以在for循环已经结束时执行。 另外,当以这种方式调用do_something(i)它总是使用for循环的最后一个值。 我以这种方式尝试了封闭 do_something((function(x){return x})(i)) 但显然这又一次使用了for循环索引的最后一个值。 我也尝试在for循环之前声明一个函数,如下所示: var create_closure = function(i) { return function() { return i; } } 然后打电话 do_something(create_closure(i)()) 但是又一次没有成功,返回值始终是for循环的最后一个值。 有人可以告诉我,我做什么closures错了吗? 我以为我了解他们,但我不明白为什么这是行不通的。

将HTML页面replace为通过AJAX检索的内容

我有一个典型的结构的HTML页面: <html> <head> <script src="…" ></script> <style>…</style> </head> <body> content </body> <script> var success_callback = function(data) { // REPLACE PAGE CONTENT & STRUCTURE WITH "data" } ajax(url, params, success_callback); </script> </html> 你认为这是可能的吗? 我已经尝试给html标签一个id和$(id).replace(data); 没有成功。 不要问我为什么,但这是我需要的(我正在与一个特殊的“混搭build设者”网站…这是一个很长的故事)。 编辑 :我忘了说, 接收到的内容中的脚本必须执行 ,甚至包括使用<script src="…">外部脚本。

你如何sorting在多列上的数组?

我有一个multidimensional array。 主数组是一个数组 [publicationID][publication_name][ownderID][owner_name] 我想要做的是按owner_name然后由publication_namesorting数组。 我知道在JavaScript中你有Array.sort() ,你可以把自定义函数,在我的情况下,我有: function mysortfunction(a, b) { var x = a[3].toLowerCase(); var y = b[3].toLowerCase(); return ((x < y) ? -1 : ((x > y) ? 1 : 0)); } 这只是sorting上一列,即owner_name罚款,但如何修改它在owner_name ,然后publication_namesorting?

为什么JavaScript在使用replace时仅replace第一个实例?

我有这个 var date = $('#Date').val(); 这将得到在文本框中的值看起来像这样 2009/12/31 现在我就这样做了 var id = 'c_' + date.replace("/", ''); 结果是 c_1231 / 2009 它错过了最后一个'/'我不明白为什么。

Rails 4 turbo链接防止jQuery脚本工作

我正在构build一个Rails 4应用程序,我有几个分散的js文件,我试图包含“rails方式”。 我把jquery插件移动到/ vendor / assets / javascripts,我更新了清单(application.js)来要求它们。 当我在本地加载页面时,我发现它们显示正确。 但是,从编译的脚本中收到不一致的行为。 我有一个控制器特定的js文件,名为projects.js,通过使用require_tree .在application.js中引用require_tree . : //= require jquery //= require jquery_ujs //= require turbolinks //= require bootstrap.min //= require jquery.form.min //= require_tree . 我看到文件包含正确,它的工作…一半的时间。 另一半时间,在projects.js中的东西似乎没有做任何事情(这主要是jQuery的animation和一些AJAX请求)。 当它不起作用时,我会单击button几次,什么都不会发生,然后我会抛出这个错误: Uncaught TypeError: Cannot read property 'position' of null turbolinks.js?body=1:75 当脚本在单独的视图(错误的方式),这从来没有发生,所以我相当肯定这个问题是不是我的JavaScript代码。 另一个潜在的相关细节是,items.js中的东西被封装在$(document).ready(function(){ 。另外,我在开发模式下进行testing,所以javascripts和css没有被资产pipe道。 任何想法发生了什么? 我是Rails的新手,但我已经尽力遵循所有的约定。 更新! 当我的项目脚本不起作用时,这是可预测的。 首次加载的页面每次都有效。 然后我点击一个链接到一个新的页面,使用我的project.js行为, 第二个页面从不工作。 我点击几下,最后抛出上面的错误。 […]

是否有一个onSelect事件或等价的HTML <select>?

我有一个input表单,可以让我从多个选项中进行select,并在用户更改select时执行一些操作。 例如, <select onChange="javascript:doSomething();"> <option>A</option> <option>B</option> <option>C</option> </select> 现在, doSomething()只会在select更改时被触发。 我想触发doSomething()当用户select任何选项,可能是同一个了。 我曾尝试使用“onClick”处理程序,但在用户启动select过程之前会触发该处理程序。 那么,有没有办法在用户每次select时触发一个函数? 更新: 达里尔提出的答案似乎有效,但并不一致。 有时只要用户点击下拉菜单,即使在用户完成select过程之前,事件也会被触发!

如何同步一系列的承诺?

我有一个promise对象数组,它们必须按照它们在数组中列出的顺序来parsing,也就是说,我们不能尝试parsing一个元素,直到前一个元素已经被parsing(方法all([…]) )。 如果一个元素被拒绝,我需要链条立即拒绝,而不是试图解决下面的元素。 我怎样才能实现这个,或者是否有这样的sequence模式的现有实现? function sequence(arr) { return new Promise(function (resolve, reject) { // try resolving all elements in 'arr', // but strictly one after another; }); } 编辑 最初的答案build议我们只能对这些数组元素的结果进行sequence ,而不是对它们的执行,因为在这个例子中它是预定义的。 但是,那么如何以避免早期执行的方式生成一系列的promise? 这是一个修改的例子: function sequence(nextPromise) { // while nextPromise() creates and returns another promise, // continue resolving it; } 我不想把它作为一个单独的问题,因为我相信这是同一个问题的一部分。 解 下面的一些答案和后面的讨论有点不对劲,但是最终的解决scheme正是我所期待的,它是在spex库中作为方法序列实现的 。 该方法可以迭代一系列dynamic的长度,并根据应用程序的业务逻辑的需要创buildpromise。 后来我把它变成了一个供大家使用的共享库。

从PHP到JavaScript获取variables

我想在JavaScript中使用PHPvariables。 这怎么可能?

将其他数据设置为highcharts系列

有没有办法将一些额外的数据传递给系列对象,将用于显示在图表“工具提示”? 例如 tooltip: { formatter: function() { return '<b>'+ this.series.name +'</b><br/>'+ Highcharts.dateFormat('%b %e', this.x) +': '+ this.y; } 在这里我们只能使用series.name,this.x&this.y来编辑。 可以说,我需要通过另一个dynamic的价值单独的数据集,并可以通过系列对象访问。 这可能吗? 谢谢大家提前。

在WordPress中加载更多文章Ajax Button

我浏览了一下旧的问题,并尝试了许多不同的方法,似乎这样做。 最近我必须在这里工作: 如何在自定义WP_Query Ajax上实现分页 我已经尝试了一切,它只是没有工作。 页面上绝对没有任何变化。 如果你检查加载更多的button,并点击它,jquery使更多的button操作,因为它从<a id="more_posts">Load More</a>更改为<a id="more_posts" disables="disabled">Load More</a> ,即使这对我来说似乎不对。 这不是添加post,我想我错过了一些简单的事情,但对于我的生活,我无法解决这个问题。 我的模板文件中的代码是: <div id="ajax-posts" class="row"> <?php $postsPerPage = 3; $args = [ 'post_type' => 'post', 'posts_per_page' => $postsPerPage, 'cat' => 1 ]; $loop = new WP_Query($args); while ($loop->have_posts()) : $loop->the_post(); ?> <div class="small-12 large-4 columns"> <h1><?php the_title(); ?></h1> <p><?php the_content(); ?></p> </div> […]