Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 脚本发射两次_Javascript_Jquery_Jquery Mobile - Fatal编程技术网

Javascript 脚本发射两次

Javascript 脚本发射两次,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,我一直在努力寻找解决办法 我有一个适用于所有设备的页面,在桌面上它加载jQuery,在移动设备上它切换到jQuery mobile 我在页面上有一个脚本,它从csv文件加载信息并创建一个li列表,但由于某些原因,它在移动设备上加载了两次li列表。我试过了 $("#wrapper").live('pageinit', function() { // more stuff }); 它可以在手机上运行,但在桌面视图中,它没有加载李的。我也试过document.ready,但li的手机仍然加载了两

我一直在努力寻找解决办法

我有一个适用于所有设备的页面,在桌面上它加载jQuery,在移动设备上它切换到jQuery mobile

我在页面上有一个脚本,它从csv文件加载信息并创建一个li列表,但由于某些原因,它在移动设备上加载了两次li列表。我试过了

$("#wrapper").live('pageinit', function() {
  // more stuff
});
它可以在手机上运行,但在桌面视图中,它没有加载李的。我也试过document.ready,但li的手机仍然加载了两次

代码如下:-

  <div>
  <form method="post" class="right">
      <div class="accnt_cont" >
      <div id="top5productlist" data-role="page" data-dom-cache="false">
      <div class="banner">
      <h2>View All Top 5</h2>
      </div>
      <ul id="tfive" class="listing">
       &nbsp;   
      </ul>
      </div>
      <!-- /#producttabs --> <!-- include return_policy.cont.inc.html ENDS --></div>
      <!-- /.accnt_cont -->
  </form>
  </div>
  <script>
  (function() {

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = handleStateChange;
    xhr.open("GET", "example-data.csv");
    xhr.send();
    //display("Request sent");

    function handleStateChange() {
      if (xhr.readyState == 4 &&
          xhr.status >= 200 &&
          xhr.status < 300) {
        //display("Got response");
        showData(xhr.responseText);
      }
    }

    function showData(data) {
      var rows = data.split(/\n/);
      var rowNum;
      var cells;
      var cellNum;

      for (rowNum = 1; rowNum < rows.length; ++rowNum) {
        cells = rows[rowNum].split(",");  
          display('<li>' + cells[1] + '</li>');
      }
    }

    function display(msg) {
      var p = document.createElement('li');
      p.innerHTML = String(msg);
      document.getElementById("tfive").appendChild(p);
    }
  })();
  </script>
我希望脚本在桌面和手机上工作,并且只加载李的一次。有什么建议吗?
谢谢

尝试将功能更改为

function showData(data) {
  var rows = data.split(/\n/);

  for (var rowNum = 1; rowNum < rows.length; ++rowNum) {
    var cells = rows[rowNum].split(",");  
      display(cells[1]);
  }
}

function display(msg) {
  var p = document.createElement('li');
  p.innerHTML = msg;
  document.getElementById("tfive").appendChild(p);
}

好的,开始工作了。在尝试了许多不同的方法来使用JQuery调用函数后,所有这些方法都导致脚本运行了两次,我决定尝试纯javascript,它成功了!我将函数调用更改为

window.onload = function(){
};

现在它只加载一次脚本。我不确定这是否是最好的方法,但它确实有效。

为什么要传递+单元格[1]+并将其插入html,只传递单元格[1]?在li之间有一个html分配,我将大部分内容切掉,因为这样更容易阅读代码。嗨,试过了,我还是在手机上下载了两次李。我认为问题在于jquerymobile启动了两次脚本。