2011-11-10 37 views
0

裏選擇兩個​​的innerHTML好吧,我有一個onclick事件(CF-D07是一個例子,它們是基於MySQL數據庫以編程方式生成的):在<tr id =「blahblahblah」>

<input type="checkbox" onclick="var nameUpdate = 'CF-D07'; 
datechange();" id="CF-D07"> 

那麼,下datechange(),我有這樣的:

function datechange() { 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject 

("Microsoft.XMLHTTP"); 

    } 

document.body.getElementsByTagName("tr").getElementsById(nameUpdate); 

    // This section isn't done yet. 

    // var url = "changedate.psp" 
    // var params = "user=" + nameUpdate 

    // xmlhttp.open("GET", url + "?" + params,false); 
    // xmlhttp.send(); 
    // xmlDoc=xmlhttp.responseXML; 

} 

這樣做的重要組成部分,是這部分代碼:

document.body.getElementsByTagName("tr").getElementsById(nameUpdate); 

我該如何做到這一點,以便使用標記獲取所有元素,然後根據onclick事件獲得nameUpdate的id?然後,如何選擇前兩個的innerHTML並將其放入單獨的變量中?

+2

ID是唯一的。因此,「所有帶有標籤的元素,然後具有nameUpdate的id」是無效的。 –

+0

什麼@GeorgeCummins說。 'getElementById'是單數;你需要使用'getElementsByClassName'。 – Blazemonger

回答

1

如果我正確地理解了你,你不應該在任何頁面上擁有多個具有相同ID的元素。如果您需要對html元素進行分類,請使用class屬性。

要獲得元素的內部HTML,您可以使用恰如其名的DOM元素的innerHTML屬性:

function datechange(nameUpdate) { 
    var xmlhttp; 
    if (window.XMLHttpRequest) { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { 
     // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 

    } 

    // document.body.getElementsByTagName("tr").getElementsById(nameUpdate); 
    var trs = document.getElementByClassName(nameUpdate); 

    for(var i = 0, len = trs.length; i < len; ++i) { 
     var html = tr.innerHTML; 
     // Do what you need to with HTML 
    } 
} 

與上面的代碼,你原來的HTML片段看起來是這樣的:

<input type="checkbox" onclick="datechange('CF-D07')"> 

這也假定你會有一個tr看起來像這樣的地方:

<tr class="CF-D07"> 
    <td>...</td> 
    <td>...</td> 
</tr> 

訪問給定<tr><td>元素,你可以使用children屬性的所有子元素,或者您可以直接在tr元素上使用getElementsByTagName

var tr = ... // get the TR somehow 
var tds = tr.getElementsByTagName('td'); 
var allHTML = ""; 
for(var i = 0, len = tds.length; i < len; ++i) { 
    allHTML += tds[i].innerHTML; 
} 

// Do something with allHTML, which is the inner html of all tds put together 
+0

這應該是'getElementsByClassName',而不是'getElementsByClass'。 – Blazemonger

+0

現在,如果我想要除了最後一個td以外的每個td,我會放入len = tds.length - 1嗎?或者是有不同的語法? –

+0

@ mblase75:對,我會解決這個問題,謝謝。 – rossipedia