我正在尝试向 javascript 添加额外的初始值,以便在通过鼠标在网页内拖动对象时使用。
当我尝试使用刚刚初始化的全局变量时,出现以下错误:
“未定义未捕获的 ReferenceError 前缀PicSlot
当我进入由 mouseup/down 事件调用的拖动函数时,这些变量是可访问的——它们似乎在初始化函数中不可用。
这是被调用的初始化代码:
initialize:function()
{
this.getJsonParams()
this.getPicnVidImageParams()
document.onmousedown=this.drag // Manages when the mouse is down and dragging
document.onmouseup=this.videoslot // Manages when the dragging has been stopped
$(document).on("change", "form", this.formChange)
$(document).on("click", "button", this.selectButton)
}, //initialize
顾名思义,getJsonParams 从服务器获取参数并且工作正常。
getPicnVidParams 是刚刚添加的新初始函数,它使用 getJsonParams 中的变量设置来创建要在鼠标事件中使用的新变量。当我把它放在 this.drag 函数中时,这个函数可以正常工作,但只在开始时调用一次而不是每次鼠标事件调用它更有效。
这是来自 getJsonParams 的一段代码,它创建了 getPicNvidParams 中使用的变量并且工作正常:
//Get Admin data....
jsAdmin = $.ajax("getJsAdmin" )
.done(function(data, textStatus, jsAdmin) {
// Success !!!
var tmpText = jsAdmin.responseText.replace("[", "")
tmpText = tmpText.replace("]", "")
admin = JSON.parse( tmpText)
vidPreviewHtml = admin.vidPreviewHtml
debugStatus = admin.jsDiagnostics
prefixPicSlot = admin.prefixPicSlot
prefixVidSlot = admin.prefixVidSlot
})
.fail(function() { alert("getJsAdmin - error"); })
这里 getPicnVidParams 的第一部分代码在第一部分失败
非注释行 - firstPicSlot = prefixPicSlot + "0" ...
getPicnVidImageParams:function(e){
// get the important image params from the first picture and
// video slots display
firstPicSlot = prefixPicSlot + "0"
firstPicSlotElem=document.getElementById(firstPicSlot.toString())
firstPicInnerHTML = firstPicSlotElem.innerHTML
firstPicSlot = "#" + firstPicSlot
firstVidSlot = prefixVidSlot + "0"
firstVidSlotElem=document.getElementById(firstVidSlot.toString())
firstVidInnerHTML = firstVidSlotElem.innerHTML
firstVidSlot = "#" + firstVidSlot
try{ picWidth = $(firstPicSlot).children("img").attr("width")}
catch(err)
{
alert("FN: getPicnVidImageParams error (picWidth)"
+ " \n" +
" firstPicSlot: "+ firstPicSlot
)
}
奇怪的是,这些初始化函数中的全局变量设置无法访问,但它们的设置却可以在鼠标事件驱动函数中看到。
我正在使用 Chrome。