使用JavaScript从文本区域提取所有h6标记

使用JavaScript从文本区域提取所有h6标记,javascript,jquery,wysiwyg,Javascript,Jquery,Wysiwyg,这就是我想要做的 1:有一个jQuery WYSIWYG编辑器,允许用户输入文本 2:有一个框,显示从WYSIWYG编辑器中提取的文本,该文本仅可查看。提取的文本应标上项目符号。每个项目符号项都应该是所见即所得标签中包含的任何内容 例如: 所见即所得编辑器将包含以下文本: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ut ipsum eget enim porttitor pretium. <h6>

这就是我想要做的

1:有一个jQuery WYSIWYG编辑器,允许用户输入文本 2:有一个框,显示从WYSIWYG编辑器中提取的文本,该文本仅可查看。提取的文本应标上项目符号。每个项目符号项都应该是所见即所得标签中包含的任何内容

例如:

所见即所得编辑器将包含以下文本:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ut ipsum eget
enim porttitor pretium. <h6>Ut eget purus.</h6> In nisi congue accumsan. Nulla
mattis nisl at dui porta non lacinia nulla condimentum. <h6>Maecenas convallis
suscipit magna et venenatis.</h6> Phasellus a justo sed mauris hendrerit porttitor.
下面的“仅查看”框将显示: -乌特埃吉特普鲁斯酒店 -马塞纳斯·康瓦利斯·苏西比特·马格纳和威尼斯人


谢谢你的帮助

在jQuery中,您可以使用

h6s = $('#wysiwyg h6');

在jQuery中,您可以使用

h6s = $('#wysiwyg h6');

您可以创建一个不可见的DIV,将HTML放入innerHTML属性,然后以JQuery非常喜欢的方式查询h6。我不会说JQuery,但它应该是$h6之类的,当然,这要求您的HTML输入是有效的。

您可以创建一个不可见的DIV,将HTML放入innerHTML属性,然后以JQuery非常喜欢的方式查询h6。我不会说JQuery,但它应该是$h6之类的内容,当然,这要求您的HTML输入是有效的

var text = 'foo <h6>head1</h6> bar <h6>head2</h6> waa';
var regex = /\<h6.*?\>(.*?)\<\/h6\>/g;
var match = null;
while (match = regex.exec(text)) {
    alert(match[1]); // head1, head2.
}
自担风险使用

编辑:哦,我错过了jQuery的文章。继续使用建议的jQuery解决方案,它会更好:

自担风险使用


编辑:哦,我错过了jQuery的文章。继续使用建议的jQuery解决方案,它会更好:

灵感来自Pekka:

var editorContents = $('<div/>');          // Inject the stuff from the textbox
editorContents.html( $('#editor').val() ); // into the DOM.

// Adjust to taste -- this is where we're putting the info we extract.
var bulletList = $('<ul/>').class('whatever').appendTo('wherever');

// Now just find the headings and put their contents into bullet points.
$('h6', editorContents).each( function (i) {
  $('<li/>').text( this.text() ).appendTo(bulletList);
} );
如果反复执行此操作,您将希望重用bulletList,并且您将希望重用EditorContent或其他内容。每次使用完后都将其删除,以防止DOM对象到处泄漏:


哦,您可能想使用.html而不是.text来将h6的内容传输到li。由您决定。

灵感由Pekka提供:

var editorContents = $('<div/>');          // Inject the stuff from the textbox
editorContents.html( $('#editor').val() ); // into the DOM.

// Adjust to taste -- this is where we're putting the info we extract.
var bulletList = $('<ul/>').class('whatever').appendTo('wherever');

// Now just find the headings and put their contents into bullet points.
$('h6', editorContents).each( function (i) {
  $('<li/>').text( this.text() ).appendTo(bulletList);
} );
如果反复执行此操作,您将希望重用bulletList,并且您将希望重用EditorContent或其他内容。每次使用完后都将其删除,以防止DOM对象到处泄漏:


哦,您可能想使用.html而不是.text来将h6的内容传输到li。取决于您。

您能为所见即所得输入使用代码块重新格式化您的帖子吗?除非转义,否则StackOverflow会咀嚼。请使用代码块为您的所见即所得输入重新格式化您的帖子好吗?霍布斯,谢谢你的灵感。我一直在玩这个,还没能得到端到端。老实说,我没有完全理解逻辑背后的天才。你能帮我给出一个使用下面代码的工作示例吗?Thanksher的一些工作代码-我不会说它是好代码,但它工作。为了简单起见,我放弃了WYSIWIG编辑器只需在文本框中键入一些HTML,其中包含一些h6标记。霍布斯,谢谢你的灵感。我一直在玩这个,还没能得到端到端。老实说,我没有完全理解逻辑背后的天才。你能帮我给出一个使用下面代码的工作示例吗?Thanksher的一些工作代码-我不会说它是好代码,但它工作。为了简单起见,我放弃了WYSIWIG编辑器只需在文本框中键入一些HTML,其中包含一些h6标记。只需尝试。。。代码:h6s=$'markItUp h6';$'blahblah'.htmlh6s;警报h6s;返回false;这似乎不起作用。我是否需要以某种方式循环h6s var?谢谢,jQuery返回了一个类似数组的结构。。。代码:h6s=$'markItUp h6';$'blahblah'.htmlh6s;警报h6s;返回false;这似乎不起作用。我是否需要以某种方式循环h6s var?谢谢,jQuery返回一个类似数组的结构。