【问题标题】:Javascript only working after first refresh?Javascript仅在第一次刷新后工作?
【发布时间】:2015-01-24 10:15:49
【问题描述】:

任何想法为什么下面的javascript函数只在我刷新一次页面后才起作用? 我尝试将该功能放在页面底部,但它仍然不起作用。 我觉得这与代码运行的顺序有关,但我无法确定具体在哪里。

    function incrementIssue(id) {
        var row = "#row" + id;
      if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
      } else { // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
          document.getElementById("issue"+id+"Upvote").innerHTML=xmlhttp.responseText;
            //$(row.toString()).find('.ui-icon').removeClass('ui-icon-custom').addClass('ui-icon-arrow-d');

        }
      }
      xmlhttp.open("GET","incrementIssue.php?q="+id,true);
      xmlhttp.send();
    }

    </script>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="docs/themes/blue/jquery.mobile-1.2.0.css">
    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>

    </head>
    <body>

    <div data-role="page" id="pageone">
      <div data-role="header">
        <h1>Pithy</h1>
        <div data-role="navbar">
          <ul>
            <li><a href="index.php">Home</a></li>
            <li><a href="issues.php">View Issues</a></li>
            <li><a href="add.php">Add Issue</a></li>
          </ul>
        </div>
      </div>

      <div data-role="main" class="ui-content">
      <ul data-role="listview" data-inset="true" data-split-theme="c"  >    

    <?php

    mysql_connect($hostname, $username, $password) OR DIE ("Unable to
    connect to database! Please try again later.");
    mysql_select_db($dbname);

    //Fetching from your database table.
    $query = "SELECT * FROM $usertable";
    $result = mysql_query($query);

    if ($result) {
        while($row = mysql_fetch_array($result)) {
            $issue = $row["issueName"];
            $upvotes = $row["upvotes"];
            $id = $row["issueID"];
            echo "<li data-icon=\"arrow-u\" id=\"row".$id . "\"> <a data-transition=\"pop\" href=\"point.php?id=". intval($id). "\">".$issue ."</a><a href=\"javascript:incrementIssue(".$id.");\"></a> <span id=\"issue".$id."Upvote\" class=\"ui-li-count\">" .$upvotes."</span></li>";

        }
    }

    ?>
      </ul>

      </div>

      <div data-role="footer">
        <h6>See what's important.</h6>
      </div>
    </div> 

    </body>
    </html>

【问题讨论】:

  • 您的意思是说,无论您从结果集中单击哪个链接,incrementIssue() 函数只会执行一次?

标签: javascript jquery mobile refresh


【解决方案1】:

我认为这是 Ajax 的问题(我不知道 php,但我的 asp.net mvc 应用程序中有类似的东西)。我使用 jquery 和“on”方法解决了这个问题。 请看这个Jquery api ON

【讨论】:

    【解决方案2】:

    编辑: 找到this。这可能适用于所有有 javascript 页面的人。问题是 jquery 需要在围绕 javascript 的 div 标签&lt;div data-role="page"&gt; 中有一个属性。看看我在编辑中发布的链接。

    【讨论】:

    • 问题是,我不希望函数在加载时运行。这是一个 ajax 函数,所以我只希望它在有人单击按钮时运行
    • 看看这个link
    • 没问题 =) 只需要一点谷歌搜索:D
    【解决方案3】:

    尝试将您的功能置于“settimeout”javascript 函数下...并将超时设置为 100 毫秒

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 2019-05-25
      • 2014-11-16
      • 1970-01-01
      • 2016-02-17
      • 2017-09-19
      相关资源
      最近更新 更多