我試圖轉換一個JavaScript函數,該函數跑掉了單擊事件以在頁面加載和窗口大小調整時啓動。正如你在下面看到的,我註釋了控制點擊事件的部分,並添加了最後一行「window.onload」,並手動將class =「resizerd」添加到了正在使用的元素中。幫助將JavaScript點擊函數轉換爲onLoad
該函數根本沒有運行。 Chrome的開發工具顯示「Uncaught TypeError:無法設置未定義的屬性'prevWidth'」我在某處弄亂了語法嗎?有關如何啓動這個負載的任何建議?
謝謝!
//var clicked = document.getElementById("buttonImportant")
var resizeeContainer = document.getElementById('video_container');
var resizee = resizeeContainer.getElementsByTagName('video')[0];
/*clicked.addEventListener('click',function(){
if(resizeeContainer.className.lastIndexOf("resizerd")>=0){
}
else
{
resizeeContainer.className="resizerd";
}*/
myResizerObject.prevWidth = resizee.offsetWidth;
myResizerObject.prevHeight = resizee.offsetHeight;
myResizerObject.Init();
//},false);
myResizerObject.prevWidth = resizee.offsetWidth;
myResizerObject.prevHeight = resizee.offsetHeight;
myResizerObject.Init();
var RESIZER = function(){
this.prevWidth = resizee.offsetWidth;
this.prevHeight = resizee.offsetHeight;
this.resizee = resizeeContainer.getElementsByTagName('video')[0];
this.resizeeContainer = resizee.parentNode;
this.resizeeStyle = this.resizee.style;
var ratio = this.resizee.offsetHeight/this.resizee.offsetWidth;
var that = this;
this.Init = function(){
if(that.resizeeContainer.className.lastIndexOf("resizerd")>=0)
{
var resizeeContOffsetWidth = that.resizeeContainer.offsetWidth;
var resizeeOffsetWidth = that.resizee.offsetWidth;
var resizeeContOffsetHeight = that.resizeeContainer.offsetHeight;
var resizeeOffsetHeight = that.resizee.offsetHeight;
if(that.prevWidth!= resizeeContOffsetWidth)
{
that.prevWidth = resizeeContOffsetWidth;
var desired = resizeeContainer.offsetHeight/resizeeContainer.offsetWidth;
if(desired>ratio){
that.resizeeStyle.width=resizeeContOffsetWidth*desired+resizeeContOffsetWidth*desired+"px";
that.resizeeStyle.left = -1*(resizeeOffsetWidth-resizeeContOffsetWidth)/2+'px';
}
else{
that.resizeeStyle.cssText="width:100%;height:auto;position:fixed;";
}
}
if(that.prevHeight!=resizeeContOffsetHeight)
{
that.prevHeight = resizeeContOffsetHeight;
var desired = resizeeContOffsetHeight/resizeeContOffsetWidth;
if(desired>ratio){ console.log(ratio);
//that.resizeeStyle.top = '0px';
that.resizeeStyle.left = -1*(resizeeOffsetWidth-resizeeContOffsetWidth)/2+'px';
that.resizeeStyle.width = resizeeContOffsetHeight*desired+resizeeContOffsetHeight/desired+'px';
}
else
{
that.resizeeStyle.top = -1*(resizeeOffsetHeight-resizeeContOffsetHeight)/2+'px';
}
}
}
};
};
var myResizerObject = new RESIZER();
window.onresize = myResizerObject.Init;
window.onload = myResizerObject.Init;
@PST - 我找到了斜體和粗體的居高不下的組合。如果你能在不向我說話的情況下借給你的建議,我將不勝感激。 這就是說 - 當點擊功能未被評論時,該函數可以正常運行,因此證明它可以工作。我的理解是,點擊功能用於指定要使用的元素,並通過手動將類「resizerd」添加到該元素,我可以避免點擊,然後運行函數onLoad – technopeasant
Hi technopeasant。您是否試圖在Firebug或Chrome/Safari開發人員工具中查看控制檯?如果他們在控制檯中寫出一些東西,它會幫助我們,幫助你很多:) 另一個快速注意,是我建議你使用jQuery - 如果可能的話,作爲你做的很多事情,他們很容易:) –
@Jesper布拉德簡森又名。 Deldy - 只是更新了該信息的帖子。顯示錯誤:「Uncaught TypeError:無法設置屬性'prevWidth'未定義」 – technopeasant