"$"未定义;jquery在<头部>;没有冲突的脚本或库
"$" is undefined; jquery clearly linked to in <head>; no conflicting scripts or libraries
-=-此代码功能。我只能假设缓存有问题,因为在非函数/函数之间没有任何更改。感谢大家的帮助(尤其是Niko,他让我对jquery语法有了更丰富的理解)-=-
我已经亲手编写了这个脚本,并最终决定将其更新为jquery,以适应这一点,并简化代码。这应该是呈现一个简单的菜单(它以前做过)。
- 这两个.js文件与.html文件位于同一目录中。这是在我的电脑上测试的,而不是在服务器上
- 这个代码的前一个版本只需链接到taskMaster.js就可以完美地工作。当时我的代码没有使用"$"标记的调用
- Firebug在尝试调用
$(document).ready(function () {
时显示错误"ReferenceError:$未定义" - "net"选项卡不显示正在加载的.js文件;net选项卡完全为空,没有显示任何活动-我相信这是因为我正在PC上测试它;当我加载功能代码时,网络面板是空的
- 我偶然发现有什么问题,重新安装了jquery的新版本,但没有用
损坏的代码"taskMaster.js":
$(document).ready(function () {
//main menu
function Main()
{
var mainList = ["New List","Show Lists","Delete Lists"];
//var onClick = [New,Lists,Delete];
var mainMenu = new Menu("Main Menu","menuMain",mainList/*,null*/);
mainMenu.contentMenu();
}
$(Main);
//menu class
function Menu(name,divClass,content/*,onclick*/)
{
$("#interface").html(null);
//title
formatDiv("interface",name,divClass,name/*,null*/);
//return
if(name != "Main Menu")
{
formatDiv(name,null,"return","^ Main Menu","Main()");
}
//display options
this.contentMenu = function()
{
for(i=0; i<content.length; i++)
{
formatDiv("interface",content+i,"menuContent",content[i]/*,onclick[i]*/);
}
}
}
//format divs
function formatDiv(target,divId,divClass,content/*,onclick*/)
{
$("#"+target).append("<div id=''" + divId + "'' class=''" + divClass + "''>" + content +"</div>");
/*$("#"+divId).click(function()
{
onclick;
});*/
}
});
我注释掉了未使用的行,但它显示"$"为未定义的
这是HTML:
<html>
<head>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="taskMaster.js"></script>
<link rel="stylesheet" type="text/css" href="taskMaster.css" />
</head>
<body>
<div id="interface">
</div>
</body>
</html>
据我所知,这个html没有什么问题——以前同样的格式运行得很好。所改变的是,我引入了jquery,并将taskMaster.js中的一些命令更改为使用"$"。
好的,我现在把这个作为答案发布,因为在这里提供一些例子更容易。
第一件事是:每当您执行访问DOM的操作(如$("#interface").html(null);
)时,首先需要确保DOM已准备好。这就是"准备就绪"事件的用途:
$(document).ready(function() {
/* The code here is executed when the DOM is ready! */
});
因此,如果"Main()"是一个启动一切的函数,您可以简单地列出DOM准备好时要调用的函数:
function Main() {
/* ... */
}
$(document).ready(Main);
大多数情况下,将整个JavaScript代码封装在"就绪"事件处理程序中也是安全的:
$(document).ready(function() {
function Main() { /* ... */ }
function formatDiv(...) { }
// ...
// All functions are defined, now let's go:
Main();
});
现在点击处理程序:jQuery的"click()"函数需要一个函数,当点击相应的DOM元素时,该函数将被调用。您当前正在向它传递类似"New()"的字符串,但应该直接传递这些函数。要做到这一点,可以通过以下方式更改"Main()"中的代码:
// Old: var onClick = ["New()","Lists()","Delete()"];
var onClick = [New, Lists, Delete]; // New
这会将实际函数添加到数组中,而不仅仅是它们的名称。
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- Javascript-ID冲突的几率
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- "$"未定义;jquery在<头部>;没有冲突的脚本或库
- 是否“;onload()"HTML的延迟与加载javascript的延迟冲突