Javascript-将函数赋值给变量不';我不能如愿工作

Javascript-将函数赋值给变量不';我不能如愿工作,javascript,jquery,Javascript,Jquery,当我尝试从函数返回对象并将其分配给smalls变量时,smalls变量为空,因为它的长度返回为0 var smalls = function(){ var table = $("#box-table-a"); return table.find("small"); }, smallContent; for(var i = 0; i<smalls.length; i++){ smallContent = smalls[i].in

当我尝试从函数返回对象并将其分配给smalls变量时,smalls变量为空,因为它的长度返回为0

var smalls = function(){
        var table = $("#box-table-a");
        return table.find("small");
    }, smallContent;
    for(var i = 0; i<smalls.length; i++){
        smallContent = smalls[i].innerHTML;
        smalls[i].parentElement.className += "relative";
        smalls[i].className += "form-absolute-right";
        smalls[i].innerHTML = "<span class='bubble'>" + smallContent + "<span>";
    }
var smalls=function(){
var表=$(“#box-table-a”);
返回表。查找(“小”);
},小含量;
对于(var i=0;iTry

var smalls=function(){
var表=$(“#box-table-a”);
返回表。查找(“小”);
},小含量;
对于(var i=0;iTry

var smalls=function(){
var表=$(“#box-table-a”);
返回表。查找(“小”);
},小含量;

对于(var i=0;i来说,这是因为您必须实际执行函数,而不仅仅是分配它。 将函数分配更改为自动执行的匿名函数,这应该可以工作

var smalls = (function(){
    var table = $("#box-table-a");
    return table.find("small");
})(), smallContent;

这是因为您必须实际执行函数,而不仅仅是分配它。 将函数分配更改为自动执行的匿名函数,这应该可以工作

var smalls = (function(){
    var table = $("#box-table-a");
    return table.find("small");
})(), smallContent;

您忘记在此处执行
smalls

var smalls = function(){
        var table = $("#box-table-a");
        return table.find("small");
    }, smallContent;
    for(var i = 0; i<smalls.length; i++)
//                   ^smalls is a function pointer

var smalls = function(){
            var table = $("#box-table-a");
            return table.find("small");
        }(), smallContent;
//       ^execute the function
        for(var i = 0; i<smalls.length; i++)
//                       ^smalls is a nodeList
var smalls=function(){
var表=$(“#box-table-a”);
返回表。查找(“小”);
},小含量;

对于(var i=0;i您忘记在此处执行
smalls

var smalls = function(){
        var table = $("#box-table-a");
        return table.find("small");
    }, smallContent;
    for(var i = 0; i<smalls.length; i++)
//                   ^smalls is a function pointer

var smalls = function(){
            var table = $("#box-table-a");
            return table.find("small");
        }(), smallContent;
//       ^execute the function
        for(var i = 0; i<smalls.length; i++)
//                       ^smalls is a nodeList
var smalls=function(){
var表=$(“#box-table-a”);
返回表。查找(“小”);
},小含量;

对于(var i=0;i,正如其他人所提到的,您循环一个函数引用,而不是执行
smalls
的结果

但是,在使用jQuery时,可以编写更短/更简单的代码:

var smalls = $("#box-table-a").find("small"); // this var really contains the elements
smalls.addClass("form-absolute-right").wrapInner("<span class='bubble' />");
smalls.parent().addClass("relative");
var smalls=$(“#box-table-a”).find(“small”)//此变量确实包含元素
smalls.addClass(“形式绝对权利”).wrapInner(“”);
smalls.parent().addClass(“相对”);
这有各种好处:

  • 这些类只是简单地添加到列表中,您不必担心空格
  • wrapInner确实保留了DOM(与所有侦听器等一起),而不是与html字符串混淆
  • 遍历方法的parent()对集合进行唯一化,因此具有多个
    表框的元素只能得到一个类
  • 您根本不需要循环,jQuery方法对集合中的每个项都执行

正如其他人所提到的,您循环一个函数引用,而不是执行
smalls
的结果

但是,在使用jQuery时,可以编写更短/更简单的代码:

var smalls = $("#box-table-a").find("small"); // this var really contains the elements
smalls.addClass("form-absolute-right").wrapInner("<span class='bubble' />");
smalls.parent().addClass("relative");
var smalls=$(“#box-table-a”).find(“small”)//此变量确实包含元素
smalls.addClass(“形式绝对权利”).wrapInner(“”);
smalls.parent().addClass(“相对”);
这有各种好处:

  • 这些类只是简单地添加到列表中,您不必担心空格
  • wrapInner确实保留了DOM(与所有侦听器等一起),而不是与html字符串混淆
  • 遍历方法的parent()对集合进行唯一化,因此具有多个
    表框的元素只能得到一个类
  • 您根本不需要循环,jQuery方法对集合中的每个项都执行

你所说的“不工作”是什么意思?是的,你确实给变量分配了一个函数。但你为什么需要它呢?保罗·布彻(Paul Butcher)——将问题编辑得更有意义!你所说的“不工作”是什么意思是的,你确实给一个变量分配了一个函数。但是你为什么需要它呢?Paul Butcher-编辑了这个问题,让它更有意义!Bergi-哇。从来都不知道我不需要一个循环。谢谢分享知识!Bergi-哇。从来都不知道我不需要一个循环。谢谢分享知识!