将数组传递给JavaScript回调
我对jQuery非常熟悉,但正如大多数人所知,jQuery和普通javascript之间有很大的区别。我正试图深入了解香草javascript,我有一些代码和一些问题 在下面的代码中,我试图从Writeboard.com(已退役)获取通过导出功能生成的HTML。基本上,我正在尝试获得一些有用的实践,并编写一个脚本来查找特定的内容,例如,将数组传递给JavaScript回调,javascript,oop,debugging,syntax,Javascript,Oop,Debugging,Syntax,我对jQuery非常熟悉,但正如大多数人所知,jQuery和普通javascript之间有很大的区别。我正试图深入了解香草javascript,我有一些代码和一些问题 在下面的代码中,我试图从Writeboard.com(已退役)获取通过导出功能生成的HTML。基本上,我正在尝试获得一些有用的实践,并编写一个脚本来查找特定的内容,例如,//Title:…,然后将其放入JSON数组中,然后将其解析为XML。最终的目标是将所有这些都转换为XML,这样它就更具可移植性(既可以远离传统的Writeboa
//Title:…
,然后将其放入JSON数组中,然后将其解析为XML。最终的目标是将所有这些都转换为XML,这样它就更具可移植性(既可以远离传统的Writeboard.com板,也可以直接导入到我正在开发的web应用程序中)
因此,我还有一段路要走,我不想找任何人为我编写代码,但我正试着把我的思想集中在以下几件事上:
- 尝试创建一个名为
的回调,该回调允许用户传递一个数组,如下所示,告诉脚本将要搜索的特殊“键”(值)。父级TargetList
将提取其内容并保存到JSON数组中,这样就可以放弃包含元素的
,而XML属性(例如
)可以将其包装 - 我对在JS中设置数组的正确语法的理解是
创建一个空数组,我可以在稍后循环搜索、查找和保存脚本的各个方面时填充该数组。我想我把这个设置错了,我不知道为什么var targetList=[]
- 我还弄不明白为什么不能直接调用
convertXML(['//Title:','//Prerequisite:','//Description:'])代码>函数在脚本的后面,我在这方面遇到了错误,不知道为什么。我所遇到的错误导致我假设我没有正确设置目标,所以我只是通过将函数包装在
中来创建一个目标。我意识到,在脚本后面调用早期函数时,没有必要这样做,尽管我不确定为什么会遇到困难document.ready
- 我还弄不明白为什么不能直接调用
( 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 );
(函数($){//wrap jQuery以防止冲突
$(文档).ready(函数(){
函数convertXML(targetList){
var targetList=[];
var i=0;
虽然(i我可以回答你的第二个问题,但你需要详细说明你的第一个问题
您不能在页面后面调用convertoxml
的原因是您将它包装在一个作用域中(实际上,它分为两个部分)
这是一种常见的模式,使用jQuery可以克服其他库有时会接管特殊的$variable name的问题。但重要的是要了解,匿名方法内部定义的任何内容都不能从方法外部访问。因此,如果要从外部访问convertoxml
方法,您需要将其定义移到该块之外
此外:
$(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只加载一次。删除其中一个。是否将targetList与其他变量名混淆?可能与targetList中的大写字母t相同?在您的convertToXML函数中,您有targett列为一个参数,将其覆盖到一个空数组中。然后循环并尝试将每个项推送到同一数组中。我不明白你想做什么。你想做什么?为什么你认为你需要回调?我使用回调是因为我想使可移植且不重复,我有很多文件(每个文件都有自己的带有不同项目符号的
)。我的目的是将脚本作为插件包含在文档头中,可以在回调中以数组的形式传递变量,然后搜索这些变量,获取
内容并将标记解析为XMLThank!这很有意义,我意识到我以前遇到过这个问题,仍然将其提交给了m为了详细说明问题1:我之所以使用回调,是因为我想让回调变得可移植且不重复,我有很多文档(每个文档都有自己的,带有不同的项目符号)。我的意图是将脚本作为插件包含在文档头中,可以在回调中以数组形式传递变量,然后搜索这些变量,获取- 内容并将标记解析为XML。这是否澄清了意图?我认为您要查找的词是“方法”或“函数”。“回调”通常用于表示在其他函数完成或发生事件时调用的函数。例如,传递给
$(document).ready()的匿名函数
是一个回调函数,它在文档准备就绪时被回调。明白了。但是,作为记录,更多的测试证明,在jQuery中包装函数不是问题所在。我仍在努力解决这个问题,但是$(document).ready(function(){convertoxml(['Title:'、'predition:'、'Cost:'、'Description:'、'Effect:'、'Categories:'];})
和类似的convertToXML([…]);
都会导致脚本报告的错误。我不想永远拖下去,但对于这个问题的未来读者,请注意,被定位为错误的代码只是部分错误(函数($){})(jQuery);
很好。
$(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.
});