Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery文本区域内编辑Div内容_Javascript_Jquery_Html Editor - Fatal编程技术网

Javascript 在jQuery文本区域内编辑Div内容

Javascript 在jQuery文本区域内编辑Div内容,javascript,jquery,html-editor,Javascript,Jquery,Html Editor,我使用的是Dmxzones高级HTML编辑器3,它插入以下代码: <textarea id="advHTMLEdit1" name="advHTMLEdit1" class="dmxEditor" style="width:700px;height:300px"></textarea> jQuery(document).ready( function() { jQuery("#advHTMLEdit1").dmxEditor(

我使用的是Dmxzones高级HTML编辑器3,它插入以下代码:

<textarea id="advHTMLEdit1" name="advHTMLEdit1" class="dmxEditor" style="width:700px;height:300px"></textarea>

 jQuery(document).ready(
   function()
     {
       jQuery("#advHTMLEdit1").dmxEditor(
         {"width": 700, "lineBreak": "p", "allowUpload": true, "uploadPath": "tmp", "subFolder": "1", "uploadProcessor": "php", "allowResize": true, "includeCss": "tutorial.css", "skin": "blue"
       );
     }
 );

jQuery(文档).ready(
函数()
{
jQuery(“#advHTMLEdit1”).dmxEditor(
{“width”:700,“lineBreak”:“p”,“allowUpload”:true,“uploadPath”:“tmp”,“subFolder”:“1”,“uploadProcessor”:“php”,“allowResize”:true,“includecs”:“tutorial.css”,“skin”:“blue”
);
}
);
它使用javascript execCommand()插入元素,并将类样式应用于这些元素

使用:
jQuery(“#advHTMLEdit1”)[0]

我似乎能够访问它,但我尝试过的任何东西都不能让我访问childNodes。我希望能够循环通过编辑器创建的每个childNode,查询类,如果它是一个特定的类名,则替换该元素上的HTML

我不使用jQuery,虽然我自己也尝试过很多东西,但我似乎无法访问由编辑器创建的任何元素。

借用answer中的一些内容,根据您提供的链接,您应该执行以下操作:

如果要对所有匹配的类应用一致的
css

var ifrm = $("#advHTMLEdit1").prev(".dmx-editor-frame-wrapper").find("iframe")[0];
ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
ifrm = $(ifrm.document);
ifrm.find(".yourClass").css("cssProperty", "cssValue");
如果要对所有元素应用不同的
css

var ifrm = $("#advHTMLEdit1").prev(".dmx-editor-frame-wrapper").find("iframe")[0];
ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
ifrm = $(ifrm.document);
var elem;
ifrm.find("body *").each(function(){
    elem = $(this);        
    if(elem.hasClass("yourClass") && elem.is("span")) {
        //elem.css("cssProperty", "cssValue");                
        elem.text("new text");
    }
});
如果要更改具有特定类的所有span的文本,可以使用更短的代码执行以下操作,无需循环:

ifrm.find("span.myClass").text("new text");
仅当
span
的新文本取决于
名称时,才使用第二个示例

编辑: 根据您在页面中提供的示例,您可以编写:

ifrm.find("p.codeblock").text("new text");

你可以发布生成的
HTML
?这会提供一个更清晰的图片。页面上的HTML与代码框中的HTML相同,这是你的意思吗?不,我是指在浏览器中生成的最终
HTML
。只需右键单击页面,然后单击
查看页面源代码
或其他类似内容,具体取决于你的浏览器。
textarea
元素不能有子元素(afaik),因此生成的HTML很可能存储在其他地方(除非在提交表单之前根本不存储)。如果使用DOM检查器(F12)您应该能够找到它的存储位置。我刚刚尝试实现这一点,在您的第二个示例中,我如何获取innerHTMl并替换?即:elem.innerHTMl='Some Text';@CraigStewart我已根据您的要求更新了第二个示例。@CraigStewart很抱歉,我的示例中漏掉了一行。我还更新了整个示例,它现在应该可以工作了。好的,这可以工作了,但是否可以作为html插入,原因是我将使用pears text_highlight类,因此代码块类中的任何用户输入都将通过ajax作为div替换为语法突出应用。arh,elem.html工作,非常感谢您的帮助和时间。非常感谢。