2011-08-15 6 views
1

나는 JavaScript와 jsp의 콤보를 가지고 있는데, 그것은 몇 가지 텍스트를 추가하고 그것을 벗어나고있다. 나 또한 그것이 제출 된 후 텍스트를 편집 할 수 있도록 일부 javascrpt있다. 그러나 html은 편집 버튼을 클릭 할 때 렌더링됩니다.javascript를 사용하여 "innerHtml"속성에서 html을 이스케이프 처리하려면 어떻게해야합니까?

function editCommentToggle(id) 
{ 
    theRow = document.getElementById("id"+id); 
    //user = theRow.cells[0].innerHTML; 
    //date = theRow.cells[1].innerHTML; 
--> com = theRow.cells[2].innerHTML; 


    idx = 2; 
    maxlength = 250; 

       // Comment field 
     cell = theRow.cells[idx]; 
     while(cell.childNodes.length > 0) cell.removeChild(cell.childNodes[0]); 
     element = document.createElement("textarea"); 
     element.id="comments-"+id; 
     element.rows="3"; 
     element.value = com; 
     element.style.width = "400px"; 
     element.maxLength = "250"; 
     element.onfocus = element.onkeydown = element.onkeyup = function(){return characterCounterEdit(undefined, maxlength, this);}; 
     cell.appendChild(element); 

"theRow.cells [2] .innerHTML;"은 그 셀에서 텍스트 나 HTML을 잡아 내고 있지만, '개행'이라고 말하면 <br> .....을 표시합니다. 어떻게이 구조를 이스케이프 처리 된 html로 유지해야합니까 ??

고맙습니다 (IE 또는 innerText와)

답변

1

사용하는 TextContent

com = theRow.cells[2].textContent || theRow.cells[2].innerText 
+0

친구 야 ... 시도해 보겠습니다. –

+0

근무했습니다. –

0

내가 사용할 수있는 기존 웹 응용 프로그램, 아니 jQuery를 또는 다른 공상 라이브러리를했다. if-then-else textContent/innerText fix를 시도했지만 동적으로 생성 된 DIV 요소에 대해 어떤 이유로 작동하지 않았습니다. 따라서이 대안을 구현해야했습니다. Firefox, IE8, IE9 및 Opera에서 테스트되었습니다.

// XMLEscape reserverd characters 
function XMLEscape(sValue, bUseApos) { 
    var sval=""; 
    for(var idx=0; idx < sValue.length; idx++) { 
    var c = sValue.charAt(idx); 
    if  (c == '<') sval += "&lt;"; 
    else if (c == '>') sval += "&gt;"; 
    else if (c == '&') sval += "&amp;"; 
    else if (c == '"') sval += "&quot;"; 
    else if (c == '\'') sval += (bUseApos ? "&apos;" : "&#39;"); 
    else sval += c; 
    } 
    return sval; 
} 

var sprite = document.createElement("DIV"); 
sprite.setAttribute("class", "sprite_red"); 
sprite.setAttribute("style", "top:" + nextOffsetTop +"px"); 
sprite.innerHTML = XMLEscape(items[idx]); 
scene.append(sprite); 
관련 문제