2013-03-14 196 views
1

我有以下表結構:訪問標記通過JavaScript

<table id="currentloc_table"> 
    <tr> 
    <th></th> 
    <th>Name</th> 
    <th>Details</th> 
    </tr> 
    <tr> 
     <td><input id='viewonMapCheckbox' type='checkbox'></td> 
     <td> 
      <span class="tooltip" href="#"> 
       <span class="custom info"> 
        <em> 
        </em> 
        Last Activity: 2013-03-12 03:29:21<br/> 
        Latitude: <span id="lat">30</span><br/> 
        Longitude: <span id="lon">70</span><br/> 
       </span> 
      </span> 
     </td> 
     <td>Details</td> 
    </tr> 
</table> 

我需要使用JavaScript設置緯度和經度值,但不能使它工作。請幫助我。這是我寫的代碼:

var loc_table = document.getElementById('currentloc_table'); 
var loc_table_rows_count = document.getElementById('currentloc_table').getElementsByTagName("tr").length; 
for (var i = 0; i < loc_table_rows_count; i++) { 
    if (i > 0) {//skipping header row 
     var row = loc_table.rows[i]; 
     row.cells[1].firstChild.firstChild.getElementById("lat").innerHTML = "31"; 
     row.cells[1].firstChild.firstChild.getElementById("lon").innerHTML = "71"; 
    } 
} 
+0

你爲什麼要使用循環,如果你有單列? – Cris 2013-03-14 13:08:00

+0

@cris可以有多行。我將單行顯示爲示例數據。 – Azeem 2013-03-14 13:16:55

+0

然後每個緯度和經度都會有相同的ID,請確保您有不同的ID或通過名稱 – Cris 2013-03-14 13:29:28

回答

2

id是一個全球性的領域,只是這樣做:的

document.getElementById("lat").innerHTML = "31"; 
document.getElementById("lon").innerHTML = "71"; 

什麼,而不是你寫。

+0

訪問它不起作用。跨文本沒有得到更新。 – Azeem 2013-03-14 13:13:00

+0

你什麼時候調用javascript代碼?您不能只在一開始就分配這些值,只有在頁面完全加載時才應該運行此JavaScript代碼。看看body onload事件,以便能夠在你的頁面加載時運行:http://www.w3schools.com/jsref/event_body_onload.asp – aram90 2013-03-14 13:15:23

+0

實際上,我已經在按照你的建議進行操作了。這段代碼是在頁面加載時觸發的JS函數中寫入的。 – Azeem 2013-03-14 13:17:58

0
var loc_table = document.getElementById('currentloc_table'); 
var loc_table_rows_count = document.getElementById('currentloc_table').getElementsByTagName("tr").length; 
for (var i = 1; i < loc_table_rows_count; i++) { 
     document.getElementById("lat"+i).innerHTML = "31"; 
     document.getElementById("lon"+i).innerHTML = "71"; 
} 

而在你的HTML,添加在id屬性的行數。 例如:

<table id="currentloc_table"> 
    <tr> 
    <th></th> 
    <th>Name</th> 
    <th>Details</th> 
    </tr> 
    <tr> 
     <td><input id='viewonMapCheckbox' type='checkbox'></td> 
     <td> 
      <span class="tooltip" href="#"> 
       <span class="custom info"> 
        <em> 
        </em> 
        Last Activity: 2013-03-12 03:29:21<br/> 
        Latitude: <span id="lat1">30</span><br/> 
        Longitude: <span id="lon1">70</span><br/> 
       </span> 
      </span> 
     </td> 
     <td>Details</td> 
    </tr> 
</table> 
+0

其不工作... – Azeem 2013-03-14 13:18:41

+0

附加什麼?給更多的解釋...你是否在span中添加一個行索引,以確保**所有id **都是**唯一的** – JoDev 2013-03-14 13:27:22

0

看起來你需要有一排以上。在這種情況下,你不能使用ID作爲跨度(我們應該在頁面上有一個唯一的ID)。 關於解決您的任務: 將您的ID屬性更改爲CLASS。 簡單的JS解決方案:

var loc_table = document.getElementById('currentloc_table'); 
var loc_table_rows = loc_table.getElementsByClassName("table_row"); 
for (var i = 0; i < loc_table_rows.length; i++) { 
    var row = loc_table_rows[i]; 
    var rowLatitude=row.getElementsByClassName('lat')[0].innerHTML='31'; 
    var rowLongitude=row.getElementsByClassName('lon')[0].innerHTML='71'; 
} 

HTML例如:

<table id="currentloc_table"> 
    <tr> 
     <th></th> 
     <th>Name</th> 
     <th>Details</th> 
    </tr> 
    <tr class="table_row"> 
     <td> 
      Latitude: <span class="lat">30</span><br/> 
      Longitude: <span class="lon">70</span><br/> 
     </td> 
    </tr> 
    <tr class="table_row"> 
     <td> 
      Latitude: <span class="lat">30</span><br/> 
      Longitude: <span class="lon">70</span><br/> 
     </td> 
    </tr> 
</table> 
+0

可以請你推薦Javascript代碼來實現這個,而不是通過jquery。謝謝 – Azeem 2013-03-14 13:20:14

+0

http://jsfiddle.net/DzVaH/ – 2013-03-14 14:22:56