我有一些通过 URL 自动生成的 HTML 和 javascipt。这个 html 和 javascipt 是使用 Smarty 模板生成的。不幸的是,生成的这段代码使用了一堆 jQuery,但对 jQuery 库的引用不包含在代码中,因此会产生错误。我无法改变这一点。下面是生成错误“未捕获的引用错误:cj 未定义”的 javascript 的第一部分的示例
<script type="text/javascript">
cj( function() {
var element_date = "#birth_date_display";var element_time = "#birth_date_time";var time_format = cj( element_time ).attr('timeFormat');
cj(element_time).timeEntry({ show24Hours : time_format, spinnerImage: '' });
var currentYear = new Date().getFullYear();var alt_field = '#birth_date';cj( alt_field ).hide();var date_format = cj( alt_field ).attr('format');var altDateFormat = 'mm/dd/yy';
switch ( date_format ) {
case 'dd-mm':
case 'mm/dd':
altDateFormat = 'mm/dd';
break;
}
不过,我能做的是将代码添加到文件的末尾。所以我能够加载相关的库并再次输入相同的 javascript 代码,它工作正常。
我遇到的问题是,事后我也在尝试使用 jQuery 对页面进行一些样式设置。下面的行给了我这个问题。一切都很好,但我的javascript文件只是在这一行退出,
$("#editrow-email-Primary, #editrow-phone-1-1, #editrow-birth_date").wrapAll("<div class='grid-group personal' />");
再次出现相同的错误“未捕获的引用错误:未定义 cj。以前的大多数 javascript 都用于 editrow-birth_date div,因为它使用 jQuery UI 日期选择器。有趣的是,只需在文件末尾附加相同的 javascript 和 jQuery 就可以了,直到我只添加 .wrapAll。然后它似乎试图在原始 javascript 中再次运行某些东西并生成一个新错误并退出。
我完全被困在这里,我什至不知道如何正确解释我的想法。有没有一种方法可以让我从代码中即时删除原始的 javascript,使其无法再执行?我不这么认为,但我希望这样可以解决我的问题。