Javascript jQuery文本旋转函数不使用参数

Javascript jQuery文本旋转函数不使用参数,javascript,jquery,arrays,Javascript,Jquery,Arrays,我在jQuery中搜索了一个文本旋转引擎,因为我不知道怎么做。我在StackOverflow上找到了答案: 我发现有效的代码: var terms = ["term 1", "term 2", "term 3","term 4","term 5","term 6","term 3"]; function rotateTerm2() { console.log($("#rotate").data("term")); //debug 1 var ct = $("#rotate").

我在jQuery中搜索了一个文本旋转引擎,因为我不知道怎么做。我在StackOverflow上找到了答案:

我发现有效的代码:

var terms = ["term 1", "term 2", "term 3","term 4","term 5","term 6","term 3"];

function rotateTerm2() {

  console.log($("#rotate").data("term"));  //debug 1

  var ct = $("#rotate").data("term") || 0;
  console.log(ct);
  $("#rotate").data("term", ct == terms.length -1 ? 0 : ct + 1).text(terms[ct]).fadeIn()
      .delay(2000).fadeOut(400, rotateTerm2);
}
$(rotateTerm2);
这工作得很好,我可以在数组中添加新字符串并编辑动画计时。但是,我想使用参数将其编辑为函数,我可以将其放入脚本中,并在需要时导入。我计划了4个参数:

  • 要更改哪个元素
  • 包含文本将更改为的字符串的数组
  • 延迟/显示将停留的时间(simple jquery.delay)
  • 衰减速度
  • 现在我的代码如下所示:

    var terms = ["term 1", "term 2", "term 3","term 4","term 5","term 6","term 3"];
    
    function rotateTerm(changeE,Rterms,delay,fadeSpeed) {
      var element = "#" + changeE;
    
      console.log(element);          //debug 1
      var ct = $(element).data("term") || 0;
    
    
      console.log($(element).data("term"));  //debug 2
      console.log(ct);            //debug 3
      $(element).data("term", ct == Rterms.length -1 ? 0 : ct + 1).text(Rterms[ct]).fadeIn()
                  .delay(delay).fadeOut(fadeSpeed, rotateTerm);
    }
    rotateTerm("rotate",terms,2000,400);
    
    但是,这不起作用,我得到了一个错误:

    TypeError:Rterms未定义

    这让我很困惑,因为我确信仅仅传递值并使用值变量而不是值本身将是小菜一碟。因此,我尝试了调试,正如我的代码中所看到的那样,I console.log记录了我得到的变量以及其他变量,并将它们与工作函数的console.log进行了比较,我发现错误出现在函数第二次运行之后,控制台日志的输出如下:

    rotate text rotate.html:44:5
    未定义的textRotate.html:52:5
    0

    紧接着,第二次是这样的:

    未定义的textRotate.html:44:5
    未定义的textRotate.html:52:5
    0

    第三次出现了错误

    我注意到由于某种奇怪的原因,元素变为“#未定义”。我认为由于数组(第二个参数)引发了一个类型错误,所以我查找了我是否犯了错误,javascript需要一些特殊条件才能将数组用作参数,但我认为没有,因为我没有找到任何引用。我试过。。。我的数组的参数部分中有运算符,但它也不起作用

    现在我的问题是,有没有办法转向:

    function rotateTerm2() {
    
      console.log($("#rotate").data("term"));  //debug 1
    
      var ct = $("#rotate").data("term") || 0;
      console.log(ct);
      $("#rotate").data("term", ct == terms.length -1 ? 0 : ct + 1).text(terms[ct]).fadeIn()
                 .delay(2000).fadeOut(400, rotateTerm2);
    }
    $(rotateTerm2);
    
    对于具有元素参数的类似引擎的函数、元素更改为的值的数组、延迟和动画速度?
    我非常感谢您的帮助,我对jQuery非常陌生,我不知道为什么我的数组和元素突然未定义。

    您的淡出没有使用具有相同参数的rotateTerm调用,因此rTerms是
    未定义的

      .fadeOut(fadeout, function(){
        rotateTerm( $element, terms, delay, fadeout )
      });
    
    演示

    var术语=[“术语1”、“术语2”、“术语3];
    函数旋转计($元件、术语、延迟、衰减)
    {
    var ct=$element.data(“术语”)| 0;
    $element.data(“term”,ct==terms.length-1?0:ct+1).text(terms[ct]).fadeIn().delay(delay)
    .fadeOut(fadeOut,function(){
    旋转计($element、terms、delay、fadeout)
    });
    }
    旋转仪($(“#旋转”),术语,2000年,200年
    
    
    
    这是一个句子这是什么变化

    好的,很好,它正在工作,谢谢现在你能解释一下参数声明中“$元素”前面的“$”是什么意思吗?为什么我需要它?您可以查阅jquerys文档,了解jquery构造函数如何使用传递给它的函数参数,但我没有使用该方法。我用参数直接调用这个方法。