javascript - 遍历修改<td>标签
问题描述
jquery版本:1.8原代码
<tr><td>1</td><td>11,12</td></tr><tr><td>2</td><td>21,22</td></tr>
改成
<tr><td>1</td><td><a>11</a><a>12</a></td></tr><tr><td>2</td><td><a>21</a><a>22</a></td></tr>
尝试过给<td>11,12</td>加入id='img',但是$('#img').eq(1).html()无法获取到第二行的内容.
for(var i=0; $('#img').length; i++){ //$('#img').eq(i).html需要非空判断 var arr= $('#img').eq(i).html.spilt(); var str; for(var j=0; aar.length; j++){str = '<a>'+arr[j]+'</a>'; } $('#img').eq(i).html(str);}
jQuery不是很熟,一些语法错误希望大手帮忙改正,给大手们添麻烦了.
问题解答
回答1:不知道你明不明确一点,id是唯一的,一个html代码页面同样的id名称只能有一个!所以$('#img').eq(1)这样的代码肯定不符合规范。
目测你的代码把添加id改为添加类class后这样是没有问题的,另外可以使用jquery的each方法来遍历dom节点:
var $img = $(’.img’);’$img.each(function(index,item){ var aar = $(item).text().split(’,’), str = ’’; arr.forEach(function(item1,index1){str = '<a>'+item1+'</a>'; }); $(item).html(str);});回答2:
$(’tr’).each(function(){ var _arr = $(this).children('td:eq(1)').html().split(','); var _str = ''; for(var i in _arr){_str +='<a>'+_arr[i]+'</a>' } $(this).children('td:eq(1)').html(_str);})回答3:
id只能是唯一的哦,只能取到第一个值,所以要用class
<!DOCTYPE html><html><head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> <title>test</title> <script type='text/javascript' src='https://cdn.bootcss.com/jquery/2.2.3/jquery.min.js'></script><body> <table> <tr> <td>1</td> <td>11,12</td> </tr> <tr> <td>2</td> <td>21,22</td> </tr> </table></body><script type='text/javascript'>$(function () { $(’tr’).each(function(){ $(this).addClass('img'); // 这里加入class var dom = $(this).find('td').eq(1); dom.each(function () { var arr = $(this).html().split(','); var len = arr.length; var str = ’’; for (let i = 0; i < len; i++) {str += ’<a>’ + arr[i] + '</a>' } console.log($(this), len, str); $(this).html(str); });}); // 这里你可以输出来看看 console.log($('.img').eq(1).html())})</script></html>
相关文章: