元素id是不被接受的函数参数?

时间:2012-07-24 16:55:28

标签: javascript jquery

我试图将参数传递给函数,即

 animateDiv(div) {
  .....

}

这个函数有效,但是当我试图像这样传递参数时,它就会工作,即。

$activeToggle.toggle("slow", function(){
            $(this).find(".anime_yellow").each(function (i,e){

            console.log(e.id); // this prints simple
            animateDiv(simple); // this works
            animateDiv(e.id);   //this deosnt work but it prints 'simple' 


         });

当我将硬核值传递给它工作的函数,即animateDiv(simple)时,如果我尝试放置一个包含相同内容的变量,那么它就会工作animateDiv(e.id),谢谢

完整代码在这里:http://jsfiddle.net/Fwhtv/22/

3 个答案:

答案 0 :(得分:4)

您的animateDiv假设您将传入一个对象。请注意以下几行:

function animateDiv(div){
   var text = $('#' + div.id).text(); //div is assumed to be a div element

如果您想传递id,则必须将其更改为:

function animateDiv(divId){
   var text = $('#' + divId).text();

当然也更新了对div.id的其他引用。

工作:http://jsfiddle.net/Fwhtv/22/

答案 1 :(得分:1)

来自你的jsfiddle:

function animateDiv(div){

var text = $('#' + div.id).text();

var doAnimate = function() {
    $('span.' + div.id).each(function() {
        var that = $(this);
        setTimeout(function() {
            that.animate({ fontSize: "90px" }, 1500 )
                .animate({ fontSize: "50px" }, 1500 );
        },that.index()*100);
    });
}

您正在传递ID,但在函数中您期望元素。

答案 2 :(得分:0)

$activeToggle.toggle("slow", function(){
      $(this).find(".anime_yellow").each(function (i,e){

            console.log(e.id); // this prints simple
            animateDiv(simple); // this works
            animateDiv(e.id);   //this deosnt work but it prints 'simple' 


         });

在函数(i,e)中,e是元素。

<span id="simple" class="anime_yellow">

要获取ID,您需要使用$(e).attr('id');

animateDiv($(e).attr('id'));

当前您将参数作为对象传递。如果传递对象的id(span),则需要更改span的id,如下所示。

function animateDiv(div){
// var text = $('#' + div.id).text();
var text = $('#' + div).text();

var doAnimate = function() {
    //  $('span.' + div.id).each(function() {
     $('span.' + div).each(function() {

        var that = $(this);
        setTimeout(function() {
            that.animate({ fontSize: "90px" }, 1500 )
                .animate({ fontSize: "50px" }, 1500 );
        },that.index()*100);
    });
}