javascript - jquery函数改变html标签

标签 javascript jquery html

我有一个带有 2 textarea 的 HTML 页面,一个输入和一个输出。在输入 textarea将进入以下 HTML 结构:

<table>
    <tr>
        <td>TEXT: <input type="text" value="" /></td>
    </tr>
    <tr>
        <td>TEXT: <input type="text" value="" /></td>
    </tr>
    <tr>
        <td>TEXT: <input type="text" value="" /></td>
    </tr>   
</table>

是否会通过单击提交按钮将此共振峰转换为输出文本区域中的此结构:

<ul>
    <li>
        <label>TEXT:<label> 
        <input type="text" value="" />
    </li>
    <li>
        <label>TEXT:<label> 
        <input type="text" value="" />
    </li>
    <li>
        <label>TEXT:<label> 
        <input type="text" value="" />
    </li>
</ul>

即jQuery 函数应该:

  • 替换<TABLE>通过 <UL>
  • 替换<TD>通过 <LI>
  • 删除标签<TR>
  • 并添加<LABEL>标记“TEXT”这个词

我的 HTML 代码如下所示:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title>Beta style</title>
        <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
        <script>
            function gerador() {
                var code = $('textarea[name=message]').val(); //Pega código do input
                alert(code);
                //$("body").append("<h2>Output</h2><textarea id="output" rows="10" cols="100"></textarea>");//Cria campo Output
                $('#output').val(code); //Escreve codigo no Output
                $('#output:contains("TEXT")').wrapInner('&lt;label&gt; &lt;label &#47; &gt;');
            }
        </script>
    </head>
    <body>
        <h2>Input</h2>
        <textarea name="message" id="input" rows="10" cols="100"></textarea>
        <input type="button" value="Submit" onclick="gerador();" />
    </body>
</html>

我无法在 textarea 中添加标签.

最佳答案

简单的方法是在 td 元素上使用 contents:

var table = $("table"); // Limit this as appropriate
var ul = $("<ul>");
table.find("td").each(function() {
  ul.append($("<li>").append($("<label>").append($(this).contents())));
});
table.replaceWith(ul);

Live example

它的作用:

  1. 获取适当的表格(我刚刚使用了 $("table"),但我相信您会想要使其更具体)。

  2. 创建无序列表。

  3. 遍历表中的 td 元素。

  4. 对于每个 td 元素:

    1. 创建一个li

    2. 创建一个标签

    3. td.contents() 移动到 label 中(contents 包括文本节点)。

    4. label 附加到 li

    5. li 附加到 ul

  5. ul 替换 table

这做同样的事情,但可能更清楚:

var table = $("table"); // Limit this as appropriate
var ul = $("<ul>");
table.find("td").each(function() {
    var li = $("<li>");
    var label = $("<label>");
    label.append($(this).contents());
    li.append(label);
    ul.append(li);
});
table.replaceWith(ul);

Live copy

关于javascript - jquery函数改变html标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23870445/

相关文章:

jquery - click() jquery 函数在新的 div 上不可用

javascript - 这在 javascript 私有(private)方法中指的是什么

javascript - 类型 'number' 的参数不可分配给类型 'string' 的参数

javascript - ASP.NET MVC : 2d array is null after being passed from javascript to MVC controller action

javascript - dojo.gauges 中仪表的突然变化。不像 dojox.gauges

javascript - Canvas 绘制很慢

html - 照片和标题布局问题

javascript - 使用 Jquery 在索引位置后追加元素?

javascript - 在 Chrome 中使用高 CPU 的 Canvas

javascript - html: 如何在多个选择标签中添加默认选项?