我在标题中放置了一个没有任何先前脚本标记的标记,其中的代码如下:
<script type="text/javaScript">
alert("asd");
function displayPic(str){
if(str=""){
document.getElementById("slider").innerHTML="<img src="" class='slider'/>";
}
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
document.getElementById("slider").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "gallery.php?q="+str, true);
xmlhttp.send();
}
</script>
警报的目的是测试脚本是否正在执行。事实上,事实并非如此。没有弹出警报说“asd”,就好像根本没有JS代码,但是当我删除整个函数displayPic并保留alert(“asd”)时,它运行得很好。我无法发现这段简单的代码有任何问题,我花了30分钟时间试图找出可能导致这种情况的原因,但我解决问题的能力没有结果。
这是一个PHP页面,顺便说一下,使用WAMP在本地主机上运行它。
答案 0 :(得分:0)
我刚刚找到了一个有趣的在线资源:http://www.javascriptlint.com/online_lint.php
粘贴代码,发现了三个可能的问题:
;
1 <script type="text/javaScript">
2 alert("asd");
3
4 function displayPic(str){
5 if(str=""){
=========================^
warning: test for equality (==) mistyped as assignment (=)?
6 document.getElementById("slider").innerHTML="<img src=\"\" class='slider'/>";
7 }
8
9 if(window.XMLHttpRequest){
10 xmlhttp=new XMLHttpRequest();
11 }
12
13 xmlhttp.onreadystatechange=function(){
14 if(xmlhttp.readyState==4){
15 document.getElementById("slider").innerHTML = xmlhttp.responseText;
16 }
17 }
18 xmlhttp.open("GET", "gallery.php?q="+str, true);
================^
lint warning: missing semicolon
19 xmlhttp.send();
20 }
21 </script>
可能有更好的资源,但这显然是您将来可能要做的事情,然后向社区寻求您的javascript帮助。
答案 1 :(得分:0)
该行:
document.getElementById("slider").innerHTML="<img src="" class='slider'/>";
在JS双引号(" "
)中有HTML双引号(" "
)。这会导致语法错误,从而解释为什么没有代码运行。尝试:
document.getElementById("slider").innerHTML="<img src='' class='slider'/>";
这不会导致错误,但您可能还指if (str == "")
,其中包含双等号。否则,您将""
分配给str
,覆盖您的字符串并确保永远不会输入。