2015-09-25 74 views
1

document.getElementById("n")在腳本里面php不能訪問html中的段落id="n"。 該段落的內部html未被更改。 我也嘗試過使用jQuery,但它無法更改innerHTMLphp內部的javascript代碼無法訪問html元素。 document.getElementById不起作用

<?php 
    $username="root"; 
    $password=""; 
    $servername="localhost"; 
    $database="mydb"; 
    $conn=mysqli_connect($servername,$username,$password,$database); 
    if(!($conn)){ 
     die(mysqli_connect_error()); 
    } 
    $sql="select passenger from place where source='chennai' and destination='bengaluru'"; 
    $result=mysqli_query($conn,$sql); 
    if(mysqli_num_rows($result)>0){ 
     echo '<script>document.getElementById("n").innerHTML="Do Something";</script>'; 
    } 
    mysqli_close($conn); 
?> 
<html> 
    <head lang="en-us"> 
     <title>Cards</title> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <script src="js/materialize.min.js"></script> 
     <script src="jquery-1.11.3.min.js"></script> 
     <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 
     <link rel="stylesheet" href="css/materialize.min.css"> 
     <link rel="stylesheet" href="demo_css.css"> 
    </head>  
    <body> 
     <p id="n"></p> 
     <div class="container" id="con"> 
      <div class="card hoverable"> 
       <div class="card-content waves-effect waves-block waves-light"> 
        <h1 class="card-title activator grey-text text-darken-4" id="content"></h1> 
       </div> 
       <div class="card-reveal"> 
        <span class="card-title grey-text text-darken-4">Passengers<i class="material-icons right">close</i></span> 
       </div> 
      </div> 
     </div> 
    </body> 
</html> 
+1

這是因爲php生成的js是在加載其餘的年齡之前執行的。如果你把它放在html塊下面,它應該可以工作。 – Jeff

+1

..如果你已經在使用jQuery,你可以使用'$(document).ready()'來等待頁面的其餘部分被加載並準備訪問。或者像這裏使用香草js方法:http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the – Jeff

+0

where is the JavaScript代碼?這裏只列出了php和html –

回答

2

原因document.getElementById('n')回到沒有什麼,在於它的HTML(包括你正在試圖獲得元素)加載的其餘部分之前執行。

所以,你有幾種選擇:

  1. 將您的JavaScript的HTML(最好收之前</html>)下方。 這種方式將元素加載到DOM後執行

  2. 使用加載DOM時觸發的函數,並將js代碼放在那裏。

2.1。一種方法是使用jQuery的$(document).ready()

$(document).ready(function() { 
    document.getElementById("n").innerHTML="Do Something"; 
} 

2.2。一些香草JS的方式描述在SO-Post中: pure JavaScript equivalent to jQuery's $.ready() how to call a function when the page/dom is ready for it

+0

感謝它的工作 –