<table>
<tr><td>foo</td></tr>
<tr><td>bar</td></tr>
<tr><td>abc@yahoo.com</td></tr>
</table>
下の表の電子メール アドレスのみを取得する Javascript 行を作成する方法を誰か教えてもらえますか? IDなしでやりたい..助けてください
<table>
<tr><td>foo</td></tr>
<tr><td>bar</td></tr>
<tr><td>abc@yahoo.com</td></tr>
</table>
下の表の電子メール アドレスのみを取得する Javascript 行を作成する方法を誰か教えてもらえますか? IDなしでやりたい..助けてください
var rows = document.getElementsByTagName("table")[0].rows;
var last = rows[rows.length - 1];
var cell = last.cells[0];
var value = cell.innerHTML
ここで自分で試してみてください:http://jsfiddle.net/ReyNx/。
document.getElementsByTagName("table")[0]
明らかに、テーブルに適切に一致するように変更する必要があります
jQueryを使用している場合は、次の方が簡単です。
var value = $('table tr:last td').text();
詳細については、「MDN DOMリファレンス」を参照してください。このリファレンスには、DOMをトラバースする要素で使用できるプロパティが示されています。
jQueryinnerHtml
やその他の邪悪で重い関数は使用せず、単純な古い JavaScript のみを使用します。
// Get the first table in the document.
var table = document.getElementsByTagName('table')[0];
// Get the third row of this table (0-index 3rd = 2)
var emailRow = table.rows[2];
// Get this element's content.
var emailContent = emailRow.firstChild.textContent;
1行で書くことができます:
var emailContent = document.getElementsByTagName('table')[0].rows[2].firstChild.textContent;
テーブル内のすべてのメール アドレスを検索する場合:
var emails = [];
var table = document.getElementsByTagName('table')[0];
var rows = table.rows;
for (var i = 0; i < rows.length; i++) {
var rowText = rows[i].firstChild.textContent;
if (~rowText.indexOf('@')) { // If the content of the row contains a '@' character (This could be replaced with a regex check)
// Also, I personally prefer to use '~' over '> -1' for indexOf(), but both would work.
emails.push(rowText);
}
}
console.log(emails);
通常の Javascript (jQuery などのライブラリなし) を使用しており、これがページ上の唯一のテーブルであると仮定すると、次のコードを使用してテーブルの 3 番目の tr を選択し、td 要素に含まれるものを見つけることができます。
var table = document.getElementsByTagName("table")[0];
var emailTr = table.rows[2];
var emailTd = emailTr.cells[0];
var email = emailTd.innerHTML;
jQueryはこれをより簡単にします
var email = $("table").children("tr:eq(2)").children("td").html();
簡単な方法は、それに共通のクラスを与えることです。試す:
<table>
<tr><td class="email">foo</td></tr>
<tr><td class="email">bar</td></tr>
<tr><td class="email">abc@yahoo.com</td></tr>
</table>
<script>
function getEmail(){
var email = new Array();
var arr = document.getElementsByClassName('email');
for(var i=0; i< arr.length; i++){
email.push(arr[i].innerHTML);
}
alert(email.join(','));
}
</script>
これは、 jQuery ライブラリを使用している、または使用する予定がある場合の解決策です。
メールが常に 3 行目と 1 列目にある場合 (例のように)、次のように実行できます。
email = $('table tr:nth-child(3) td:first-child').html();
実際のデモを見る
すべての<tr>
要素を取得します。innerHTML
それぞれをループして、電子メール アドレスに一致する正規表現と比較します。
var emailAddresses = [];
var cells = document.getElementsByTagName("td");
for (var i = 0; i < cells.length; i++) {
if (cells[i].innerHTML.match(/yourEmailRegex/g)) {
emailAddresses[emailAddresses.length] = cells[i].innerHTML;
}
}
ここで適切な正規表現を見つけてください http://www.regular-expressions.info/email.html