2017-03-02 98 views
2

我想在文本框中显示HTML内容,但我卡住了。 这是我的代码,当我将文本显示到标签中时,它工作正常。但它不适用于文本框。javascript-如何在文本框中显示html内容

HTML代码:

<div id="showDiv"></div> 

JavaScript代码:

function myfun(){ 
    var item="<span class="kwcat">results in <b>(.*?)</b></span>"; 
    var div2 = document.createElement('div'); 
    div2.setAttribute("id", "myid"); 
    div2.setAttribute("class","inner"); 
    value2= replaceAll(item, '<','&lt;'); 
    value2=replaceAll(value2, '>','&gt;'); 

    var comp= '<div>'; 
    comp += '<label >'; 
    comp += "Heading: "; 
    comp += '</label>'; 

    /* comp += '<input type="text" value=' + value2 + '>'; */ 

    comp += '<label>'; 
    comp += value2; 
    comp +='</label>'; 
    comp += '</div>'; 
    div2.innerHTML = comp; 
    showDiv.appendChild(div2); 
} 
function replaceAll(str, find, replace) { 
    return str.replace(new RegExp(find, 'g'), replace); 
} 

我所评论的线,就是我要工作的内容。我哪里错了?

+2

你需要用引号括住值 – Toxide82

+0

M你需要richtext编辑器。 –

+0

你为什么要将属性的id设置为跨度元素 – Toxide82

回答

0

用引号括输入值以及

function myfun(){ 
var item="<span class=\"kwcat\">results in <b>(.*?)</b></span>"; 
var div2 = document.createElement('div'); 
div2.setAttribute("id", "myid"); 
div2.setAttribute("class","inner"); 
value2= replaceAll(item, '<','&lt;'); 
value2=replaceAll(value2, '>','&gt;'); 

var comp= '<div>'+ 
     '<label>Heading:</label>'+ 
     '<textarea>'+ value2 + '</textarea>'+ 
     '<label>'+value2+'</label>'+ 
     '</div>'; 

div2.innerHTML = comp; 
showDiv.appendChild(div2); 
} 

你的函数应该像上面

+0

不能正常显示只有

function myfun(){ 
 
    var item="<span class=\"kwcat\">results in <b>(.*?)</b></span>"; 
 
    var div2 = document.createElement('div'); 
 
    div2.setAttribute('id', item); 
 
    div2.setAttribute('class','inner'); 
 
    value2= replaceAll(item, '<','&lt;'); 
 
    value2=replaceAll(value2, '>','&gt;'); 
 

 
    var comp= '<div>'; 
 
    comp += '<label>'; 
 
    comp += "Heading: "; 
 
    comp += '</label>'; 
 

 
    comp += '<input type="text" value="' + value2 + '">'; 
 

 
    comp += '<label>'; 
 
    comp += value2; 
 
    comp +='</label>'; 
 
    comp += '</div>'; 
 
    div2.innerHTML = comp; 
 
    showDiv.appendChild(div2); 
 
} 
 
function replaceAll(str, find, replace) { 
 
    return str.replace(new RegExp(find, 'g'), replace); 
 
} 
 
    
 
myfun();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div id="showDiv"></div>

注: - 为什么不你使用text-ar EA。因为将HTML粘贴到文本区域是诽谤的方式。

+0

不能正常显示仅的结果为(。*?)',并且您已经编写了结果在(。*?)'。这个项目的价值,我从一些API获取,所以我不能修改它。还有很多其他的价值,并且用单引号替换每个双引号在每种情况下都可能不是真的。 –

0

你应该用引号括值

comp += '<input type="text" value="' + value2 + '">'; 
0
  • 编码双引号,通过“与"

值2 =的replaceAll(值2,“'取代,'"');

  • 环绕输入数据类型的属性的用双引号

comp += <input type="text" value="' + value2 + '">';

现在,你有你的输入字段的值项变量

的值相同的值