2015-09-25 72 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

感谢它的工作 –