<table>
<tr><td>foo</td></tr>
<tr><td>bar</td></tr>
<tr><td>abc@yahoo.com</td></tr>
</table>
谁能告诉我如何编写一个 Javascript 行以仅获取下表中的电子邮件地址,我一直在搜索很多,但我遇到的只是在 td 的任一表中使用“id”的教程。我想在没有身份证的情况下做到这一点..请帮忙
<table>
<tr><td>foo</td></tr>
<tr><td>bar</td></tr>
<tr><td>abc@yahoo.com</td></tr>
</table>
谁能告诉我如何编写一个 Javascript 行以仅获取下表中的电子邮件地址,我一直在搜索很多,但我遇到的只是在 td 的任一表中使用“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 的哪些元素。
没有 jQuery,innerHtml
或其他邪恶/繁重的功能,只是普通的旧 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);
如果像我一样,您想从页面上所有表格的所有第一列项目中获取文本,然后使用它。
jQuery('table tr td').each( function( cmp ) {
console.log( jQuery(this).text() );
} );
一个简单的方法是给它一个公共类。尝试:
<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>
假设您使用的是 vanilla Javascript(没有 jQuery 等库),并且这是页面上唯一的表格,您可以使用以下代码选择表格中的第三个 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();
我想提取所有电子邮件,但我有超过 1,000 行和 17 个列/单元格。
我使用了 vanilla js,做了一些调整以获得我想要的输出
var table = document.getElementsByTagName("table")[0]; //first table
var rows = table.rows;
//loop through rows
for (var i = 0; i < rows.length; i+=1) {
var emailTr = rows[i];
var emailTd = emailTr.cells[2]; //target third column/cell
var email = emailTd.innerHTML; //get the value
console.log(email + ', ');
var node = document.createElement("span"); // create span element
node.innerHTML = email + ', '; // desired output
document.body.appendChild(node); // display to document body
}
获取所有<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
在我的情况下,我想要最后一行的第五列值
var rows = document.getElementsByTagName("tbody")[0].rows;
var last = rows[rows.length - 1];
var cell = last.cells[4];
console.log(cell.textContent);