Javascript 在函数中调用函数

Javascript 在函数中调用函数,javascript,jquery,Javascript,Jquery,当然我的语法有点小问题。。。这是我的代码的精简版本 function example1() { var thumbWidth = $(this).find('img').width(); //some more code }; function example2() { $('div').each(function(){ example1(); thumbTotal = thumbWidth + xx //etc.; }); }; $(document

当然我的语法有点小问题。。。这是我的代码的精简版本

function example1() {
    var thumbWidth = $(this).find('img').width();
    //some more code
};

function example2() {
  $('div').each(function(){
    example1();
    thumbTotal = thumbWidth + xx //etc.;
  });
};

$(document).ready(function(){
  example2();
});
我的问题是上面的代码中没有执行example1。我尝试过手动插入example1代码,效果很好。我希望能够在其他地方调用example1,因此在单独的函数中隔离它是很重要的


非常感谢。

这可能是复制粘贴错误,但是:
第9行应该是
})而不是
)}


这可能会导致错误行为,因为包含语法错误的javascript代码通常仍会以某种方式被解释,从而导致非常奇怪的结果

示例2写得不好,更改:

  $('div').each(function(){
    example1();
    //Some more code here
  )};


代码没有明显的错误(除了一些语法错误)。这个原理很好用

它失败的一些可能原因:

  • 有一些语法错误,因此没有执行任何代码
  • jQuery选择器与任何元素都不匹配
  • 您重新定义了名称(例如同名的局部变量),因此无法访问该函数
第一个可以通过放置
警报(1)进行测试某个地方,然后查看它是否显示。第二个可以通过使用
alert($('div').length)进行测试
检查匹配的元素数。第三个可以使用
警报进行测试(示例1)
查看它是否显示函数的代码,或完全不同的内容

function example1() {
  //Code
};

function example2() {
  $('div').each(function(){
    example1();
    //Some more code here
  **});**
};

$(document).ready(function(){
  example2();
});

在example2函数中有一个错位的)}

根据您编辑的帖子,您至少有两种方法可以解决这种情况:

第一:定义example1()的返回值

第二:为变量“thumbWidth”定义适当的范围

    var thumbWidth;
    function example1() {
        thumbWidth = $(this).find('img').width();
        //some more code
     };
     function example2() {
      $('div').each(function() {
         //or here var thumbWidth;
         example1();     
         thumbTotal = thumbWidth + xx //etc.;
      });
     };

 $(document).ready(function(){
   example2();
 });


这应该是可行的。

认为我的问题在于调用函数范围之外的变量。在我的例子中,这是不可能的,因为我需要变量是局部的,因为它是通过div循环的(因此变量将随着每次迭代而改变)


下面是局部变量与全局变量的解释

正确,简单的固定版本测试用例。如果这解决了问题,你能接受他的回答吗:)你检查过FF、Safari或Chrome中的错误控制台吗?有错误吗?你到底想做什么?也许显示更多example1()中的代码会对我们更有帮助。这是说“拇指宽度”是未定义的。它不能从另一个函数中获取变量吗?根据您的示例,您无法获取值,因为“thumbWidth”超出example2()的范围。它只“存在”在“example1()”中。啊,好吧,所以计算只存在于范围内,看看这个-我需要设置一个“全局变量”吗?
function example1() {
    var thumbWidth = $(this).find('img').width();
    //some more code
 };
 function example2() {
  $('div').each(function() {
      thumbTotal = example1() + xx //etc.;
  });
 };
 $(document).ready(function(){
   example2();
 });
    var thumbWidth;
    function example1() {
        thumbWidth = $(this).find('img').width();
        //some more code
     };
     function example2() {
      $('div').each(function() {
         //or here var thumbWidth;
         example1();     
         thumbTotal = thumbWidth + xx //etc.;
      });
     };

 $(document).ready(function(){
   example2();
 });
function example1(yo) {
  return $(yo).find('img').width();
};

function example2() {
    var total=0;
  $('div').each(function(){
    total+=example1(this);
    //Some more code here
  });
  alert(total);
};

$(document).ready(function(){
  example2();
});