获取 typeerror 函数不存在错误
2016-06-10
267
注意事项:
我无法访问 HTML(由引擎呈现)
引擎中包含 jQuery(这就是我不将其包含在我的代码中的原因)
此代码获取链接并将其注入 html:
$(document).ready(function(){
addSS('https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css');
addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js');
addScript('//InjectedHTML.js');
});
function addScript(str){
var script = document.createElement('script');
script.src = str;
document.head.appendChild(script);
};
function addSS(str){
var link = document.createElement('link');
link.rel= 'stylesheet';
link.href = str;
link.type= 'text/css';
document.head.appendChild(link);
};
InjectedHTML 将 datepicker 放入 HTML(与上述代码位于不同的文件中):
$(document).ready(function() {
addClass(); //adds class attribute to an input that allows me to use datepicker function
datePicker(); //adds calendar
});
function addClass(){
$("#DateWrapper input").attr("class", "datepicker");
};
function datePicker(){
$( ".datepicker" ).datepicker();
};
出现此错误:
InjectedHTML.js:35 Uncaught TypeError:$(...).datepicker 不是函数
感谢您的帮助!
1个回答
我已经有几年没有关注过手动将脚本加载到 DOM 中的情况了,但通常有一个
loaded
事件的变体,该事件在脚本实际完成加载时触发。
通常,该过程有一些异步性,因为它必须去获取文件。这意味着他们可能不会在发生这种情况时停止 javascript 引擎的执行。这意味着以某种方式您正在查看回调。
有各种库可以执行此操作。如果您不想使用它们,请阅读源代码并调查目标平台的要求。
类似这样的内容:
- https://github.com/ded/script.js/blob/master/src/script.js
- https://github.com/rgrove/lazyload/blob/master/lazyload.js
- 请注意,这些现在很常见
看起来 jquery 甚至有这样的某种形式: https://api.jquery.com/jquery.getscript/
Josh
2016-06-10