Javascript 如何在编辑器中修改元素

Javascript 如何在编辑器中修改元素,javascript,jquery,ckeditor,Javascript,Jquery,Ckeditor,我有一个带有config.fullPage=true的CKEditor,因此我需要处理整个文档 我的目标是自动查找并修改CKEditor内容中所有表单元素的操作。我尝试过使用将html字符串转换为jquery并返回的方法,但没有成功(我认为这是因为我正在处理一个完整的文档) 非常感谢您的帮助 更新 $("#mybutton").click(function(){ var editor_contents = CKEDITOR.instances[YOUR_TEXTAREA_ID].getD

我有一个带有
config.fullPage=true的CKEditor,因此我需要处理整个文档

我的目标是自动查找并修改CKEditor内容中所有
表单
元素的操作。我尝试过使用将html字符串转换为jquery并返回的方法,但没有成功(我认为这是因为我正在处理一个完整的文档)


非常感谢您的帮助

更新

$("#mybutton").click(function(){
    var editor_contents = CKEDITOR.instances[YOUR_TEXTAREA_ID].getData();
    var dom = document.createElement("DIV");
    dom.innerHTML = editor_contents
    var plain_text = (dom.textContent || dom.innerText);
    alert(plain_text);
});
选中此项,您还可以使用获取元素的HTML

另一次更新

$("#mybutton").click(function(){
    var editor_contents = CKEDITOR.instances[YOUR_TEXTAREA_ID].getData();
    var dom = document.createElement("DIV");
    dom.innerHTML = editor_contents
    var plain_text = (dom.textContent || dom.innerText);
    alert(plain_text);
});

如果
editor
是您的CKEditor的实例,那么调用
editor.editable().$
将获得iframe的原生体元素,如果愿意,您可以继续使用DOM方法或jQuery

jQuery(editor.editable().$).find('form').attr('action', '');

您希望修改CkEditor中的所有表单元素??是的,类似于我在jquery中使用$(“form”).attr(“action”),即您希望基于本机DOM元素创建元素。在CKEditorThis中,创建新元素很好,但我的目标是找到所有现有表单元素并替换其中的属性。用例是让用户保存包含表单的完整HTML文档。单击保存文档的按钮后,我想修改HTML文档中的表单,使其具有不同的属性。要在现有表单元素中替换此属性,它应该做什么,如其功能感谢更新!
.replace()
函数不是我想要的,因为它似乎用完整的CKEditor实例替换找到的元素。我想做的是提供一些功能,例如,当用户单击“保存”时,我会自动解析任何表单元素的
editor.val()
,并更改它们的action属性。然后,我将完整(修改过的)HTML字符串发送到API。简言之,我需要能够修改CKEditor HTML中的元素,并获得生成的完整HTML字符串。就像您希望获得CKEditor HTML字符串或内部HTML中元素的内容一样,我希望获得表示用户输入到CKEditor中的HTML的HTML字符串。将其转换为jquery非常有效,尽管我从jquery中获取HTML字符串有点困难。由于
editor.editable().$
表示DOM元素的列表,因此仅对jquery字符串调用
.html()
并不会返回完整的html。我不明白您想做什么。如果您想获得完整的HTML,请使用CKEditor API和调用editor.getData(),我不明白为什么要使用jQueryI,可以通过editor.getData()获得HTML字符串。我想做的是,然后将该字符串视为dom,并使用jquery修改该HTML字符串中的任何表单元素。然后,我想将修改后的dom转换回字符串,以便通过API调用将其发送回数据库。基本上,我宁愿使用jquery作为中间人,而不是在HTML字符串上进行查找/替换,如果可能的话,这样更准确一些。停下来,再次阅读我的答案,阅读示例代码,您将看到我不会将任何内容转换为字符串,并根据您的请求使用jQuery。当编辑器处于“预览”模式时,这非常有效。第二个障碍是,当编辑器处于源代码模式时,这不起作用。我可以使用
execCommand(“source”)
在两者之间切换,但它是异步的,而且似乎没有一种方法可以在完成后运行代码。