Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数组传递给JavaScript回调_Javascript_Oop_Debugging_Syntax - Fatal编程技术网

将数组传递给JavaScript回调

将数组传递给JavaScript回调,javascript,oop,debugging,syntax,Javascript,Oop,Debugging,Syntax,我对jQuery非常熟悉,但正如大多数人所知,jQuery和普通javascript之间有很大的区别。我正试图深入了解香草javascript,我有一些代码和一些问题 在下面的代码中,我试图从Writeboard.com(已退役)获取通过导出功能生成的HTML。基本上,我正在尝试获得一些有用的实践,并编写一个脚本来查找特定的内容,例如,//Title:…,然后将其放入JSON数组中,然后将其解析为XML。最终的目标是将所有这些都转换为XML,这样它就更具可移植性(既可以远离传统的Writeboa

我对jQuery非常熟悉,但正如大多数人所知,jQuery和普通javascript之间有很大的区别。我正试图深入了解香草javascript,我有一些代码和一些问题

在下面的代码中,我试图从Writeboard.com(已退役)获取通过导出功能生成的HTML。基本上,我正在尝试获得一些有用的实践,并编写一个脚本来查找特定的内容,例如,
  • //Title:…
  • ,然后将其放入JSON数组中,然后将其解析为XML。最终的目标是将所有这些都转换为XML,这样它就更具可移植性(既可以远离传统的Writeboard.com板,也可以直接导入到我正在开发的web应用程序中)

    因此,我还有一段路要走,我不想找任何人为我编写代码,但我正试着把我的思想集中在以下几件事上:

    • 尝试创建一个名为
      TargetList
      的回调,该回调允许用户传递一个数组,如下所示,告诉脚本将要搜索的特殊“键”(值)。父级
    • 将提取其内容并保存到JSON数组中,这样就可以放弃包含元素的
    • ,而XML属性(例如
      )可以将其包装

    • 我对在JS中设置数组的正确语法的理解是
      var targetList=[]
      创建一个空数组,我可以在稍后循环搜索、查找和保存脚本的各个方面时填充该数组。我想我把这个设置错了,我不知道为什么

      • 我还弄不明白为什么不能直接调用
        convertXML(['//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 );
    
    (函数($){//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.
      });