错误变量没有定义,但在使用之前定义了
error var is not defined -but its defined before used-
此代码
$(document).ready(function(){
var wBack = $('ul li.roundabout-in-focus').height();
var hBack = $('ul li.roundabout-in-focus').width();
var lback = $('ul li.roundabout-in-focus').css('left');
var tback = $('ul li.roundabout-in-focus').css('top');
});
function close_current(){
$('.nInfoIE').show();
$('.roundabout-in-focus').find('.img').show();
$('.roundabout-in-focus').css({position:'absolute',height:hBack,width:wBack,left:lBack,top:tBack});
$('.roundabout-in-focus').find('.iframe').css({'visibility':'hidden'});
$('ul li').find('.iframe').addClass('esconder');
$('ul li iframe').each(function(){
var tempurl = '';
tempurl = $(this).attr('src');
$(this).attr('src',tempurl.replace('?autoplay=1', ''));
});
watching = false;
$('.nInfoIE').hide();
}
通过firebug提示一个错误,提示hBack没有定义,正如您在文档中看到的那样。
编辑——
甚至试图在文档之前添加var wBack ,hBack,lback,tback = 0;
。准备好并删除document.ready
我错过了什么?
您已经在"ready"处理程序函数中定义了变量。这意味着它们对该函数是私有的,在该函数之外不可见。
您可以通过显式地将它们设置为window
属性来使它们可见:
window['hBack'] = whatever;
或者你也可以把你的"closeCurrent"函数放在"ready"处理程序中,只要它只被处理程序中的代码引用。
一个词,范围。在$(document).ready
函数外声明变量以使它们进入全局作用域,然后在函数内设置它们。
var wBack, hBack, lback, tback;
$(document).ready(function () {
wBack = ...
这是一个范围问题。
这里的其他答案在技术上是可行的,但如果你不需要全局使用它们,我从不建议将这些变量保持全局。
您正在dom就绪块内定义wBack
, hBack
, lBack
和tBack
,但是您正在尝试从事件处理程序访问它们。如果可以,请从元素中删除onclick
,并将其添加到DOM-ready块中以共享变量。
$(document).ready(function(){
// Store the selector
var element = $('ul li.roundabout-in-focus')
var wBack = element.height();
var hBack = element.width();
var lback = element.css('left');
var tback = element.css('top');
$("#someElement").click(function close_current(){
$('.nInfoIE').show();
$('.roundabout-in-focus').find('.img').show();
$('.roundabout-in-focus').css({position:'absolute',height:hBack,width:wBack,left:lBack,top:tBack});
$('.roundabout-in-focus').find('.iframe').css({'visibility':'hidden'});
$('ul li').find('.iframe').addClass('esconder');
$('ul li iframe').each(function(){
var tempurl = '';
tempurl = $(this).attr('src');
$(this).attr('src',tempurl.replace('?autoplay=1', ''));
});
watching = false;
$('.nInfoIE').hide();
})
});
你还应该缓存选择器在该块的顶部(如在我的例子中),以防止查询DOM重复(你可能可以在点击处理程序中这样做,但选择器是不同的,所以我留下了那个函数:)
希望有帮助!欢呼。
该变量仅在传递给ready
函数的函数范围内定义。如果你想引用它,你需要在全局作用域中声明它。(只需删除var
关键字)
您的变量(wBack,hBack,lback和tback)刚刚在您的文档中定义。准备功能。
为了能够在其他函数中使用它,变量必须是全局的。你可以删除变量前面的"var",因为在javascript中,没有"var"的变量声明会使变量成为全局变量。或者您可以像这样手动将其声明为全局:
var wBack;
var hBack;
var lback;
var tback;
$(document).ready(function(){
wBack = $('ul li.roundabout-in-focus').height();
hBack = $('ul li.roundabout-in-focus').width();
lback = $('ul li.roundabout-in-focus').css('left');
tback = $('ul li.roundabout-in-focus').css('top');
});
- Socket.IO未定义变量
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- 已定义变量出现未定义错误
- 使用eval()定义变量显示未定义的错误
- 在javascript变量中添加php定义变量
- 如何在来自另一个文件的控制器中定义变量
- 如何在不定义变量的情况下使用 document.createElement()
- 清除 Javascript 中窗口对象中的自定义变量
- 更改 Javascript 对象中所有未定义变量的值
- 定义变量是否比在 JS 中覆盖变量使用更多的资源
- 是否有类似Object.defineProperty的方法来定义变量
- coffeescript,类未定义变量
- 使用下划线未定义变量时发生抛出/捕获错误
- 如何为ajax定义变量,以及addeventlistener/pushstate函数?Javascript,而不是jQu
- 网络浏览器正在成为“;严格的“;用于Javascript中未定义变量的操作
- 使用window.location时未定义变量
- 在条件(if)结构的条件语句中是否有定义变量的有效方法
- 传递给数据的未定义变量
- bizzare未定义变量
- JavaScript 中全局范围内存在未定义变量的原因是什么?