日期:2014-05-16  浏览次数:20510 次

神奇的jquery错误,谁来说说看。
想写个测试网页,看看jquery的createElement对比原生性能大约的差多少,结果是加入jquery包就出错,不加入就能执行,谁能说说什么回事?
FF下错误是 ReferenceError: createTest is not defined


<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>jquery createElement 测试</title>
<!-- 
******  问题  ********
注释下面的jquery包就可以执行
-->
<script language="javascript" src="http://code.jquery.com/jquery-1.9.1.min.js" /> 
<script type="text/javascript">
if(!("$" in this)){
this.$= function (str) {
return document.getElementById(str.substring(1));
}
}

var createTest= function () {
var tag = $("#toAdd");
var now= new Date();
for(var i=0;i<2000;i++){
tag.appendChild(window.document.createElement("div"));
}
$("#add").innerHTML="加入结束,共用时:"+(new Date()-now);
tag=null;
now =null;
}


</script>
</head>
<body>
<div id="add" style="height:50px;width:100px;border:1px solid #0bb;background:red" onclick="createTest()">点我加上2000个对象</div>
<div id="toAdd" style="height:50px;width:100px;border:1px solid #0bb;background:blue" ></div>


</body>
</html>

jquery

------解决方案--------------------
<script language="javascript" src="http://code.jquery.com/jquery-1.9.1.min.js" /> 

<script language="javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

script标签要写完整来,不能按照单标签的格式来写

而且你区分jq和dom的操作方法

var isJQ=true
if(!("$" in this)){
    isJQ=false
    this.$= function (str) {
        return document.getElementById(str.substring(1));
    }
}
 alert( isJQ)
var createTest= function () {
    var tag = $("#toAdd")
    var now= new Date();
    for(var i=0;i<2000;i++){
       if(isJQ) tag.append(window.document.createElement("div"));
       else tag.appendChild(window.document.createElement("div"));
    }
    if(isJQ)$("#add").html("加入结束,共用时:"+(new Date()-now))
    else  $("#add").innerHTML="加入结束,共用时:"+(new Date()-now);
    tag=null;
    now =null;
}
 
 
------解决方案--------------------
<script language="javascript" src="http://code.jquery.com/jquery-1.9.1.min.js" />
改成
<script language="javascript" src="http://code.jquery.com/jquery-1.9.1.min.js" ></script>

另外这个language属性也不需要。

你这是标签不规范引起的。