JavaScript函数禁用整个JS代码

时间:2013-12-20 17:34:25

标签: javascript

我在标题中放置了一个没有任何先前脚本标记的标记,其中的代码如下:

<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在本地主机上运行它。

2 个答案:

答案 0 :(得分:0)

我刚刚找到了一个有趣的在线资源:http://www.javascriptlint.com/online_lint.php

粘贴代码,发现了三个可能的问题:

  1. 引号问题(它自动“假设”您想要转义引号)
  2. “分配而不是比较”
  3. 可能缺少;
  4.  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)

  1. 该行:

    document.getElementById("slider").innerHTML="<img src="" class='slider'/>";
    

    在JS双引号(" ")中有HTML双引号(" ")。这会导致语法错误,从而解释为什么没有代码运行。尝试:

    document.getElementById("slider").innerHTML="<img src='' class='slider'/>";
    
  2. 这不会导致错误,但您可能还指if (str == ""),其中包含双等号。否则,您将""分配给str,覆盖您的字符串并确保永远不会输入。

  3. JSFiddle

    的工作示例