勉強いろいろ
去年3月に記事に書いた以下のソースコード
$('table tr').append(function(idx, html){
return html.replace(/(<td>)([^<]+)(<\/td>)/,
"$1<a href=\"" + $(this).children('td').data('link') + "\">$2</a>$3");
自分なりに解釈して、このままでは思うように動かなかったので書き直した。
/* javascriptのコード */
$(function(){
let $ret1;
let $ret2;
let $tmp;
let $tmp2;
let $tmp3;
let $tmp4;
/* (やりたいこと)linkがない<td>データをdata-link属性から取得してlinkをつける
$('table tr').append(function(idx, html){
return html.replace(/(<td>)(.*)(<\/td>)/,
"$1<a href=\"" + $(this).children('td').data('link') + "\">$2</a>$3");
});
↑このソースを改変しても思うようにいかなかったので、
↓こんな風に書き直した。
*/
$('table tr').each((i, tr) => {
$(tr).each((k, td) => {
$tmp = $(td).find('#name').prop("outerHTML");
$tmp2 = $(td).find('#age').prop("outerHTML");
if($tmp !== undefined){
$tmp3 = $tmp.replace(/(<td.*>)(.*)(<\/td>)/,
"$1<a href=\"" + $(td).find('#name').data('link') + "\">$2</a>$3")
$tmp4 = $tmp2.replace(/(<td.*>)(.*)(<\/td>)/,
"$1<a href=\"" + $(td).find('#age').data('link') + "\">$2</a>$3")
$(tr).append($tmp3);
$(tr).append($tmp4);
}
//$ret1 = $(td).find('#name').data('name');
//$ret2 = $(td).find('#age').data('age');
});
});
});
/* htmlのコード */
<table border="1">
<tr>
<th>氏名</th>
<th>年齢</th>
</tr>
<tr>
<td data-link='http://tanaka.com' id="name" data-name="田中">田中</td>
<td id="age" data-age="21">21</td>
</tr>
<tr>
<td data-link='http://sato.com' id="name" data-name="佐藤">佐藤</td>
<td id="age" data-age="27">27</td>
</tr>
</table>
3hくらいかかった。
この記事が気に入ったらサポートをしてみませんか?