我想修改一個JavaScript的手風琴菜單,以適應我的老闆的需求。但是,現在我已經做了大部分的調整,我已經打了一個虛擬的磚牆。函數expandInit()不接受我傳遞給它的參數。我不斷收到「Object expected」錯誤,但我已經使用typeof()測試了函數的參數,並且它返回參數是一個Object。所以我很難過,任何人都可以放棄的任何光線都會非常有幫助。javascript函數不接受通過對象變量
下面是相關代碼:
function $(id){
return document.getElementById(id);
}
function expandTimer(div){
if(getHeight(div) < div.maxh){
var velocity = Math.round((div.maxh - getHeight(div))/div.speed);
velocity = (velocity < 1) ? 1 : v;
velocity = (getHeight(div) + velocity);
setHeight(div, velocity+'px');
div.style.opacity = (velocity/div.maxh);
div.style.filter = 'alpha(opacity = '+(velocity * 100/div.maxh)+');';
} else {
setHeight(div, div.maxh);
clearInterval(div.refRate);
}
}
//arg types are String, Int, and, String.
function accordian(mother, speed, alternate){
var motherObj = $(mother);
motherObj.activeNode='';
var allDivs = motherObj.getElementsByTagName('div');
for (var i = 0; i < allDivs.length; i++){
var divID = allDivs[i].id;
if (divID.substr(divID.indexOf('-') + 1, divID.length) == 'header'){
var contentID = divID.substr(0, divID.indexOf('-'))+'-content';
var divObj = $(divID);
divObj.contentNode = contentID;
divObj.hightlight = alternate;
var contentObj = $(contentID);
contentObj.style.display = 'none';
contentObj.style.overflow = 'hidden';
contentObj.maxh = getHeight(contentObj);
contentObj.speed = speed;
contentObj.refRate;
divObj.onmouseover = function(){
if (this.parentNode.activeNode != ''){
collapseInit($(this.parentNode.activeNode));
}
alert (typeof($(this.contentNode))); //returns 'object'
//code executes fine up until here.
expandInit($(this.contentNode));
this.parentNode.activeNode = this.contentNode;
}
}
}
}
雖然我沒有包括collapseInit()的代碼,它有同樣的問題。只要說上面提到的所有其他功能按預期工作即可。
編輯:對不起,沒有包含正確的功能。下面是expandInit()函數:
function expandInit(div){
alert("in expandInit"); //<---does not execute.
setDisplay(div,'block');
div.style.height='0px';
clearInterval(div.refRate);
div.refRate = setInterval('expandTimer('+div+')', 10);
}
什麼是'expandInit'?你能鏈接或粘貼定義嗎? –
您是否清除瀏覽器緩存(它可能保留了舊的Js代碼)? – VirtualTroll
'typeof($(this.contentNode))'將始終爲'object',即使'this.contentNode'爲undefined或null,因爲它是一個jQuery對象。你可能需要看看'this.parentNode.activeNode'實際上是什麼(查看調試器)。如果您需要進一步的幫助,請包含'expandInit()'的代碼。 – jfriend00