12
<table>
  <tr><td>foo</td></tr>
  <tr><td>bar</td></tr>
  <tr><td>abc@yahoo.com</td></tr>
</table>

下の表の電子メール アドレスのみを取得する Javascript 行を作成する方法を誰か教えてもらえますか? IDなしでやりたい..助けてください

4

9 に答える 9

23
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をトラバースする要素で使用できるプロパティが示されています。

于 2012-12-07T12:33:51.020 に答える
14

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);

実施例

于 2012-12-07T12:36:06.390 に答える
2

通常の 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();
于 2012-12-07T12:44:18.180 に答える
2

簡単な方法は、それに共通のクラスを与えることです。試す:

<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>

デモ

于 2012-12-07T12:34:52.510 に答える
1

これは、 jQuery ライブラリを使用している、または使用する予定がある場合の解決策です。

メールが常に 3 行目と 1 列目にある場合 (例のように)、次のように実行できます。

email = $('table tr:nth-child(3) td:first-child').html();

実際のデモを見る

于 2012-12-07T12:35:16.403 に答える
0

すべての<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

于 2012-12-07T12:37:14.843 に答える