マウスを介して Web ページ内でオブジェクトをドラッグするときに使用する JavaScript に追加の初期値を追加しようとしています。
初期化したばかりのグローバル変数を使用しようとすると、次のエラーが発生します。
"Uncaught ReferenceError prefixPicSlot が定義されていません
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 関数に入れると問題なく動作しますが、すべてのマウス イベントで呼び出すよりも、開始時に 1 回だけ呼び出す方が効率的です。
getPicNvidParams で使用される変数を作成し、正常に動作する getJsonParams のコードを次に示します。
//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
)
}
これらの初期化関数で設定されたグローバル変数にアクセスできないのは奇妙に思えますが、その設定はまだマウス イベント駆動関数で確認できます。
私はクロムを使用しています。