我有
var content='<td>
<table>
<tr>
<td>
some_html_code
</td>
<td>
another_html
</td>
</tr>
</table>
</td>'
如何在开始时移除<td>
,最后移除</td>
?
答案 0 :(得分:4)
尝试:
content.replace(/^<td>\s?(.+)\s?<\/td>$/, "$1")
编辑:或类似地:
content.replace(/^<td>/, "").replace(/<\/td>$/, "")
答案 1 :(得分:2)
假设你已经获得了所有字符串:
newcontent = content.substr(4,content.length-5);
是最简单的方法。如果你试图从更大的html(整个页面?)中获取它,那么我建议使用DOM操作。
答案 2 :(得分:1)
您可以简单地slice()
获取字符串的一部分副本。
var tmp_start_td = content.slice(5);
var tmp_end_td = tmp_start_td.slice(0,-6);
content = tmp_end_td; // result
答案 3 :(得分:1)
您可以使用XML解析器或DOM操作方法:
// Using DOM manipulation methods
var myEl = document.createElement("tr");
myEl.innerHTML = "<td>\n"+
" <table>\n" +
" <tr>\n" +
" <td>\n" +
" some_html_code\n" +
" </td>\n" +
" <td>\n" +
" another_html\n" +
" </td>\n" +
" </tr>\n" +
" </table>\n" +
"</td>";
var out = myEl.childNodes[0].innerHTML;
console.log(out);
使用上述DOM方法的一个好处是,它们可以更加宽容验证/格式错误......但是因此它们可能会在标记中添加<tbody>
元素。
或者,您也可以使用不那么宽容的DOMParser
:
// using the DOMParser to parse XML
var content = "<td>\n"+
" <table>\n" +
" <tr>\n" +
" <td>\n" +
" some_html_code\n" +
" </td>\n" +
" <td>\n" +
" another_html\n" +
" </td>\n" +
" </tr>\n" +
" </table>\n" +
"</td>";
var parser=new DOMParser();
var serializer = new XMLSerializer();
xmlDoc=parser.parseFromString(content,"text/xml");
var out = '';
var tdEl = xmlDoc.childNodes[0];
var count = tdEl.childNodes.length;
alert(count);
for(var i=0; i<count; i++) {
out += serializer.serializeToString(tdEl.childNodes[i]);
}
console.log(out);