1

我不确定为什么我会收到错误,但我收到“无法调用未定义的方法替换”。它发生在 $('#wizard'+optionalArg)部件上,如果我删除 optionalArg 部件它工作正常。知道为什么会这样吗?

 function loadWizard(optionalArg) 
    {
    optionalArg = (typeof optionalArg === "undefined") ? "" : optionalArg;
    $('#wizard'+optionalArg).smartWizard({contentURL:'/welcome/form_view',
    transitionEffect:'slideleft', onLeaveStep:leaveAStepCallback,onFinish:onFinishCallback, contentCache:false});
    }

函数调用

var id = 2;
loadWizard(id);

在我发送 ID 之前我运行这个

$('#all_wizards').append('<form action="#" method="POST"><div id="wizard2" class="swMain template"></div></form>');

所以wizard2应该存在..

4

3 回答 3

2

有可能:

$('#wizard'+optionalArg) //would make wizard2

您的 html 中没有具有此 ID 的元素,因此在 undefine 上调用方法会引发异常。

尝试使用空检查:

function loadWizard(optionalArg) 
{
   var myElement=$('#wizard'+optionalArg);
   if(myElement.length>0){
       $('#wizard'+optionalArg).smartWizard({contentURL:'/welcome/form_view',transitionEffect:'slideleft', onLeaveStep:leaveAStepCallback,onFinish:onFinishCallback, contentCache:false});
    }
}
于 2013-07-01T08:15:58.423 回答
0

你确定你有一个元素

id="wizard1" (assuming optionalArg = 1)
于 2013-07-01T08:17:02.827 回答
0

通过将 console.log 放入 ('#wizard'+ optionalArg) 进行调试并检查元素是否存在?很可能该元素不存在,因此创建和错误。

于 2013-07-01T10:48:41.990 回答