2011-11-10 5 views
0

の中の2つの​​のinnerHTMLを選択するので、onclickイベントが発生します(CF-D07が例です。これらはプログラムによってMySQLデータベースに基づいて生成されます)。<tr id = "blahblahblah">

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

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; 

} 

本の重要な部分は、このコードの一部です:

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

それでは、datechange()の下で、私はこれを持っています

どのようにして、onclickイベントに基づいて、nameUpdateというIDを持つタグを持つすべての要素を取得できるようにしますか?その後、最初の2つのinnerHTMLをどのようにして別の変数に入れるのですか?

+2

IDはユニークです。したがって、 "nameUpdateのIDを持つタグを持つすべての要素"は無効です。 –

+0

@GeorgeCumminsが言ったこと。 'getElementById'は単数形です。 'getElementsByClassName'を使用する必要があります。 – Blazemonger

答えて

1

あなたが正しく理解している場合は、どのページにも同じIDを持つ要素が複数あることはありません。 html要素を分類する必要がある場合は、class属性を使用してください。あなたはDOM要素の適切な名前innerHTMLプロパティを使用することができます

要素の内部HTMLを取得するには、上記のコードでは

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 class="CF-D07"> 
    <td>...</td> 
    <td>...</td> 
</tr> 

これはまた、あなたがこのようになります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を取りたいなら、len = tds.length - 1に入れますか?あるいは、別の構文がありますか? –

+0

@ mblase75:正解、私はそれを修正します、ありがとうございます。 – rossipedia

関連する問題