我有一个html表,我想基本上遍历每一行和每行的每个单元格,只需打印出结果。一件事是一些单元格有输入框,一些有选择下拉列表,一些单元格内有原始内容。
简单地浏览html表中的每个单元格并获取每个单元格的结果的最快方法是什么。对于选择下拉列表,我想要捕获选择的值(不是显示文本)。
答案 0 :(得分:6)
我首先在每个TD
中循环,然后评估first-child
是否为input
元素。如果是,我们将返回其值。如果不是,我们会询问它是否产生文本。如果它产生文本,我们要求提供文本。如果它不生成文本,我们会请求TD
$("table td").each(function(i,o){
var value = ( $(":first-child", this).is(":input") )
? $(":first-child", this).val()
: ( $(this).text() != "" )
? $(this).text()
: $(this).html() ;
alert(value);
});
答案 1 :(得分:2)
由于每个单元格中只有一个元素,您可以执行以下操作:
$("#myTable tr").each(function() {
// this represents the row
$("td > *", this).each(function() {
// nodeName attribute represents the tag - "INPUT" if element is <input>
// use the type attribute to find out exactly what type
// of input element it is - text, password, button, submit, etc..
if(this.nodeName == "INPUT") {
console.log($(this).attr("type"));
}
});
});
#myTable > tr
表示获取某些<tr>
个孩子的所有id="myTable"
元素。
同样,td > *
表示立即获取由<td>
对象表示的this
元素的所有子元素。这些都是CSS选择器,并且有多种方法可以在DOM中选择项目。请参阅jQuery docs以了解有关选择器的更多信息。
jQuery core文档是了解jQuery对象上所有可用方法的绝佳参考。
答案 2 :(得分:2)
很难知道完全你想要什么,但如果你可以假设选择框中的td只有那个,带输入的td只有一个文本字段,你可以这样做:http://jsbin.com/alara3/edit
答案 3 :(得分:-1)
您可以使用以下代码。
$(':input', '#tableId').val('');