Javascript 在js中使用innerHTML以外的其他方法? 雷迪格林斯巴拉斯泰肯 Lorem ipsum door sit amet,一位杰出的职业经理人,在劳动和就业方面都是临时雇员。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡

Javascript 在js中使用innerHTML以外的其他方法? 雷迪格林斯巴拉斯泰肯 Lorem ipsum door sit amet,一位杰出的职业经理人,在劳动和就业方面都是临时雇员。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡,javascript,dom,innerhtml,Javascript,Dom,Innerhtml,//JAVASCRIPT <div id="content"> <h1>Redigeringsbara stycken</h1> <p class="editable">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim

//JAVASCRIPT

<div id="content">
    <h1>Redigeringsbara stycken</h1>
    <p class="editable">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

</div>
window.onload=函数(){
/*
var pElements=document.getElementsByTagName('*');
对于(变量i=0;i”,obj);
parentnode.insertBefore(butt,obj);
parentnode.removeChild(obj);
textArea.value=targetinerHTML;
textArea.focus();
编辑=真;
}
函数saveEdit(){
var area=document.getElementsByTagName('textarea')[0];
var段落=document.createElement('P');
var parentnode=area.parentnode;
paragration.innerHTML=area.value;
parentnode.insertBefore(段落,区域);
parentnode.removeChild(区域);
parentnode.removeChild(document.getElementsByTagName('button')[0]);
编辑=假;
}

大家好,哥们!我想知道是否有另一种方法来获取html文本,而不是使用innerHtml方法?对于那些在Jquery中工作的人来说,在Jquery中实现这段代码会更容易吗?也许会更快?格雷西亚斯!:)

如果可以使用jQuery,就可以使它变得简单。您使用的活动是什么

您可以使用该方法获取/设置innerHTML

获取innerHTML

window.onload = function  () {
    /*
    var pElements = document.getElementsByTagName('*');
    for (var i=0; i < pElements.length; i++) {
        if(pElements[i].className == 'editable')
            inPlaceEditor(pElements[i]);
    };
    */
   document.onclick = catchIt;
};

function inPlaceEditor (editableElement) {

}

var editing = false;

if (document.getElementById && document.createElement)
{
   var butt = document.createElement('BUTTON');
    var buttext = document.createTextNode('Ready!');
    butt.appendChild(buttext);
    butt.onclick = saveEdit;
}

function catchIt(e) {
    if (editing) {
          alert("U're still editing!!");
        return;
    }
    if (!document.getElementById || !document.createElement) return;
    if (!e) var obj = window.event.srcElement;
    else var obj = e.target;
    while (obj.nodeType != 1) {
        obj = obj.parentNode;
        alert(obj.nodeType);
    }
    if (obj.tagName == 'textarea' || obj.tagName == 'a') return;
    while (obj.nodeName != 'P' && obj.nodeName != 'HTML')
    {
        obj = obj.parentNode;
        alert(obj.nodeName);
    }
    if (obj.nodeName == 'HTML') {
        // alert ("this is HTML");
        return;
    }
    //other way to grab the text instead of innerHTML-method????
    var targetInnerHtml = obj.innerHTML;
    var textArea= document.createElement('textarea');
    var parentnode = obj.parentNode;
    parentnode.insertBefore(textArea, obj);
    parentnode.insertBefore("<br />", obj);
    parentnode.insertBefore(butt, obj);
    parentnode.removeChild(obj);
    textArea.value = targetInnerHtml ;
    textArea.focus();
    editing = true;
}

function saveEdit() {
    var area = document.getElementsByTagName('textarea')[0];
    var paragraph = document.createElement('P');
    var parentnode = area.parentNode;
    paragraph.innerHTML = area.value;
    parentnode.insertBefore(paragraph, area);
    parentnode.removeChild(area);
    parentnode.removeChild(document.getElementsByTagName('button')[0]);
    editing = false;
}
要设置它,请执行以下操作:

$(obj).html()

似乎你只是想要文本,所以你可以写:

$(textArea).value(targetInnerHtml)
更可靠的版本是:

var targetText = obj.textContent || obj.innerText;
它可以转换成一个函数,这样你就可以调用它,而不必每次都写上面的内容

其他意见:

if (typeof obj.textContent == 'string') {
    targetText = obj.textContent;
} else if (typeof obj.innerText == 'string') {
    targetText = obj.innerText;
}
编辑将如何成为现实

function catchIt(e) {
editing = false;

  if (editing) {

butt没有在任何地方声明或初始化。

在catchIt函数结束时编辑是正确的…只要你在编辑文本是正确的…你在跟踪我吗?@YoniGeek我相信Rob是说原始的
if(editing){…}
语句没有任何作用,因为您声明的
编辑
将在它之前为false。也许这在其他函数中是有意义的,但在这里,
if
语句在任何情况下都不会求值。@Bryan if my may Bryan:这实际上不是真的。如果你尝到了代码,我写了一个警告来证明这种行为……单击文本,然后尝试单击其他地方,除了编辑,你什么都做不了……这样我检查用户是否还在编辑文本。你在跟踪我吗?:)您可能已经知道这一点,并且不喜欢它缺少添加新元素或编辑属性等功能,但是
contenteditable=“true”
将使用户可以编辑节点及其子元素的文本内容。这适用于我的Chrome、FF和IE8@布莱恩你好!我跟不上你!你的例子中没有写任何代码?@Bryan你是什么意思?你的例子中没有写任何代码?这是什么contenteditable=“true?单击链接(“参见此处以获取示例”)在我的评论结束时,或者遵循以下内容:在任何情况下,如果您希望整个
div
可编辑,您可以编写
。请注意,它的实现细节因浏览器而异,但基础是相当好的跨浏览器。它实际上是从IE5.5开始出现的。您能告诉我们您到底在寻找什么吗?什么我的理解是,如果你点击
p
html
元素,那么你就是在创建一个文本区域,并将点击元素的内容添加到文本区域,对吗?非常正确!我想编辑我点击的文本..基本上。
  parentnode.insertBefore(butt, obj);