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();
});