【发布时间】:2014-03-25 08:17:24
【问题描述】:
我有一个函数,除其他外,它从元素中获取data 属性并将其用于一些计算。问题是该属性仅在元素的背景图像加载后才分配。
由于该函数在加载背景图像之前触发,因此我要查找的变量是未定义的(因此会导致其他问题)。我想我会通过在变量未定义时使用while 循环来解决这个问题。如果该变量 未定义,请继续检查它直到未定义:
while ($(".element").data("ui-color") == "undefined"){
var color = "" // keep it blank until the attribute exists
}
然后在循环不再为真之后,给变量赋值:
var color = $(".element").data("ui-color");
问题在于它似乎忽略了 while 循环,仍然导致未定义的变量。
我应该为 while 循环使用其他条件(或完全使用其他方法)吗?
【问题讨论】:
-
如果
ui-color是从异步任务中设置的,例如图像的load事件,那么这样的循环实际上会阻止它完成。 JavaScript(主要)是单线程的,并且该线程将太忙于循环而无法处理事件。您需要将要执行的代码绑定到同一个事件,或者将设置ui-colortrigger 的代码设置为一个新事件,以便它在此期间处于空闲状态。
标签: javascript while-loop undefined