2009-05-03 4 views
1

でHTMLテーブルにリンクを作成し、私はHTMLのテーブルに動的に列を追加するには、次のコードを使用しています:はjavascriptを

var tblHeadObj = window.opener.document.getElementById("maintable").tHead; 
var j=0; 
while(j < fname.length) 
{ 
    if(tblHeadObj != null) 
    { 
    for(var h = 0; h < tblHeadObj.rows.length; h++) 
    { 
     var newTH = window.opener.document.createElement('th'); 

     tblHeadObj.rows[h].appendChild(newTH); 
     //newTH.innerHTML='[th]row:'+h+'cell:'+(tblHeadObj.rows[h].cells.length-1) 
    } 
    } 
    var tblBodyObj = window.opener.document.getElementById("maintable").tBodies[0]; 
    //for(var i = 0; i < tblBodyObj.rows.length; i++) { 
    var newCell=tblBodyObj.rows[0].insertCell(-1); 
    var newCell=tblBodyObj.rows[0].insertCell(-1); 
    // newCell.innerHTML = (tblBodyObj.rows[0].cells.length - 1) 
    newCell.innerHTML= fname[j]; 
    j++; 
} 

は、今私はlink.Howは、私はそれを行うことができますよう、列を作りたいですか?

おかげ

+0

あなたは、「リンクとして列を作る」ことで何を意味するか説明してください。 – brianpeiris

+0

テーブルの列の値はリンクとして表示され、私はそこにリダイレクトすることができます。 –

答えて

3

あなたがアンカーにセルの内容を置くしようとしている場合は、その一つの方法は変更することです

newCell.innerHTML= fname[j]; 

whateverは、変数保持がある

newCell.innerHTML= '<a href="'+whatever+'">'+fname[j]+'</a>'; 

へ適切な文字列。

fname[j]の内容はすべてインラインであることに注意してください(例:div、見出し、フォームのような表やブロックではありませんが、フォームの入力は問題ありません)、アンカーはほとんどのブラウザでは時期尚早に閉じられます。必要に応じて、セルのコンテンツの一部分のみにアンカーを配置することもできますが、最も簡単な方法はコンテンツの内容に依存します。

+0

出力で+ fname [j] +を出力しているfname.itsの値を取得しない –

+0

文書に "+ fname [j] +"という文字が出力されることを意味する場合は、引用符で囲みます。一重引用符がどこにあるか注意してください。つまり、文字列リテラルをブックエンドします。 – Anonymous

+0

+1 OPの意図を正しく推測するために+1! ;-) – Cerebrus

7

他の人が指摘しているように、「リンクを作成する」とはどういう意味ですか?しかし、私たちはコミュニティとして、実際の問題を推測し、その前提に基づいて解決策を提供することに慣れてきました。私たちがより明確でない質問に対処する経験を得ると、私たちのESPスキルはより磨かれます。

DOMメソッドを使用してHTMLテーブルを作成しているようです。作成したテーブルセル内にリンクを作成することを前提にして、私の提案は次のとおりです。

必要な要素を作成するのに同じcreateElementメソッドを使用します。例えば、リンク(アンカー)は、次のコードを使用して作成することができます。また

var link = document.createElement("a"); 
link.setAttribute("href", "http://www.microsoft.com") 
link.className = "someCSSclass"; 
// For IE only, you can simply set the innerText of the node. 
// The below code, however, should work on all browsers. 
var linkText = document.createTextNode("Click me"); 
link.appendChild(linkText); 

// Add the link to the previously created TableCell. 
newCell.appendChild(link); 

@Anonymousが示唆したように、あなたはまた、テーブルセルのinnerHTMLプロパティを設定することができます。

+0

アンカーの内容がプレーンテキストの場合は、エラーが発生しにくい方法です。悪いマークアップのタイプを扱うのではなく、何かが間違っているときに素晴らしい警告を得ることができます。 – Anonymous

1

これは、すべて良いですが、私はそうここにリンクして画像を必要とされるコードは次のとおりです。

cell[k] = document.createElement('td'); 
    var link = document.createElement('a'); 
      link.setAttribute('href', "http://www.ilovethismusic.com"); 
      link.setAttribute('target', "_blank"); 

      var newimg = document.createElement('img'); 
      newimg.src = "http://www.ilovethismusic.com/Views/Images/bg_header.jpg"; 
      newimg.alt = "imageMissing"; 
      newimg.width = "95"; 
      newimg.height = "45"; 
      newimg.border = "0"; 

      link.appendChild(newimg); 




     cell[k].appendChild(link);