将数组传递给 JavaScript 回调
Pass an Array to JavaScript Callback
我对jQuery非常熟悉,但正如你们大多数人所知,jQuery和vanilla javascript之间有很大的区别。 我正在尝试更深入地了解vanilla javascript,我有一些代码和一些问题。
在下面的代码中,我尝试从 Writeboard.com(已停用 http://37signals.com/writeboard-retired)中获取通过导出功能生成的 HTML。 基本上,我正在尝试一些有用的练习并编写一个可以找到特定内容的脚本,例如 <li>//Title:...</li>
并将其推送到一个 JSON 数组中,然后我将解析为 XML。 最终目标是将所有这些作为XML获取,以便它更具可移植性(既远离传统的 Writeboard.com 板,也可以直接导入到我正在处理的Web应用程序中)。
有一段路要走,我不是在寻找任何人为我编写代码,但我试图把我的思想集中在几件事上:
尝试创建一个名为
TargetList
的回调,该回调允许用户按如下方式传递数组,以告诉脚本特殊的"键"(值),然后将搜索这些键。父<li>
将提取其内容并将其保存到 JSON 数组中,以便可以放弃包含<li>
元素和 XML 属性(例如<title>
) 可以改为包装它。我对在 JS 中设置数组的正确语法的理解是创建一个空数组
var targetList = [];
,然后我可以在稍后循环搜索、查找和保存脚本的各个方面时填充该数组。 我想我设置错了,我不知道为什么。- 我也很困惑为什么我不能在脚本后面调用
convertToXML(['//Title:','//Prerequisite:','//Description:']);
函数,我遇到了错误,不知道为什么。 我得到的错误导致我假设我不正确地设置了一个目标,所以我只是通过将函数包装在document.ready
中来创建一个,我意识到在脚本后面调用早期函数时是不必要的,尽管我不确定为什么我遇到困难。
- 我也很困惑为什么我不能在脚本后面调用
意识到其中一些与我仍在学习的OOP原则有关,对我温柔一点,我希望有人能向我解释为什么我会出错。 我会非常感激!
( function ($) { // wrap jQuery to prevent conflicts
$(document).ready(function () {
function convertToXML (targetList) {
var targetList = [];
var i = 0;
while (i<=targetList.length) {
var target = targetList[i];
targetList.push( target );
i++;
};
};
$(document).ready(function() {
convertToXML(['Title:','Prerequisite:','Cost:','Description:','Effect:','Categories:' ]);
});
}); // end document.ready
} ) ( jQuery );
我可以回答你的第二个问题,但你需要更详细地阐述你的第一个问题。
您不能在页面后面调用convertToXML
的原因是您已将其包装在作用域中。(事实上,它分为两部分。
function($) {
// creates an anonymous function which takes one parameter (named $)
}
(function($) {
// creates an anonymous function which takes one parameter,
// and immediately calls it, passing the variable named jQuery to the parameter named $
})(jQuery);
这是使用 jQuery 克服其他库有时会接管特殊 $ 变量名称的常见模式。 但重要的是要了解您在匿名方法内部定义的任何内容都不能从方法外部访问。 因此,如果要从外部访问convertToXML
方法,则需要将其定义移到该块之外。
另外:
$(document).ready(function () {
// create an anonymous function, and pass it to jQuery's document.ready method,
// jQuery will call your function when the DOM is loaded.
});
你已经做过两次了...而且我很确定第二个不会被调用,因为它在第一个内部,它在加载 DOM 时被调用,而 DOM 只加载一次。 删除其中之一。
- JavaScript回调函数
- 如何在javascript回调函数中返回多个变量
- Google Data API上的OOP Javascript回调方法
- JavaScript回调函数和Google Feed API
- 行上的Primefaces数据表选择javascript回调
- 使用jasmine测试JavaScript回调函数
- 当页面中的某些脚本已经执行时,javascript回调
- 性能惩罚JavaScript回调函数
- JavaScript回调问题
- 需要Javascript回调ajax解释
- 未通过单击按钮调用JavaScript回调
- Google+登录JavaScript回调问题
- 在对象内完成ajax调用后触发Javascript回调
- 独立线程上的Javascript回调函数
- 循环函数(Javascript回调帮助)
- 使用JavaScript回调函数了解变量作用域和闭包
- 带有参数的Javascript回调函数
- 带有数据库的Javascript回调
- Node.js/express,javascript回调函数未执行
- javascript回调如何知道它们的参数