【问题标题】:detect if </div> doesn't have opening tag检测 </div> 是否没有开始标签
【发布时间】:2015-08-01 00:50:21
【问题描述】:

我创建了一个带有 contentEditable=true 属性的 &lt;div id="canEdit"&gt; 。 在#canEdit 下方,我制作了一个“切换到HTML”按钮,它将&lt;div&gt; 转换为&lt;textarea&gt;,它会在#canEdit 中显示源代码..

这将是一个转换回 COMPOSE 模式的按钮...

这里的问题是, 当我在没有开始标记的情况下添加额外的&lt;/div&gt;(在 HTML 模式内)时,&lt;/div&gt; 下面的代码将在切换到 COMPOSE MODE 后出现在 #canEdit 的框中

我的问题是, 如何在没有开始标签的情况下删除/防止&lt;/div&gt;..

p/s:我确信在这个网站上也不允许

没有开始标签(或没有点击代码示例),这就是为什么我必须在普通斜杠之前放反斜杠( )...如果没有,标签将被删除..

那么,如何做到这一点..如何在不打开标签的情况下删除&lt;/div&gt;

$('#toggleHtmlCompose').click(function(){
        if ($('#tulis').is('div')) {
            tempisi=$('#tulis').html();
            $('#tulis').replaceWith("<div><textarea id=\"tulis\" style=\"text-align:left\">"+tempisi+"</textarea></div>");
            $(this).val("Switch to Compose Mode");
        }
        else if ($('#tulis').is('textarea')) {
            tempisi=$('#tulis').val();
            tempisi=tempisi.replace(/<\/div> *without opening tag*/g,""); // problem
            $('#tulis').parent().replaceWith("<div id=\"tulis\" contentEditable=\"true\" ></div>");
            $('#tulis').html(tempisi);
            $(this).val("Switch to HTML Mode");
        }           
    });

标签: javascript tags element


【解决方案1】:

好吧,我自己解决了...

而不是删除额外的 &lt;/div&gt; , 我已经发出警告说“错误!您的代码中必须有额外的

”。
$('#toggleHtmlCompose').click(function(){
    if ($('#tulis').is('div')) {
        tempisi=$('#tulis').html();
        $('#tulis').replaceWith("<div><textarea id=\"tulis\" style=\"text-align:left\">"+tempisi+"</textarea></div>");
        $(this).val("Switch to Compose Mode");
    }
    else if ($('#tulis').is('textarea')) {
        tempisi=$('#tulis').val();
            var CalcDivOpen=(tempisi.match(/<div/g)).length; //this is the solution
            var CalcDivClose=(tempisi.match(/<\/div/g)).length; //this is the solution
            if (CalcDivOpen!=CalcDivClose) { 
                alert("Error! There must be an extra <div> inside your code. ");
                return false;
            } //this is the solution
        $('#tulis').parent().replaceWith("<div id=\"tulis\" contentEditable=\"true\" ></div>");
        $('#tulis').html(tempisi);
        $(this).val("Switch to HTML Mode");
    }           
});

谢谢……哈哈

猜你喜欢
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多