2011-11-28 42 views
1

在我的应用程序的选择的基础上有一个网页视图HTML文件显示。我有一个笔记功能,当用户选择文本时,它会突出显示,并且图像将作为后缀添加。这个笔记然后被保存为一个html文件。更改一些找HTML文本

因此,对于这个功能,我写了一个Java脚本函数。

function highlightsText() 
{ 

    var range = window.getSelection().getRangeAt(0); 
    var selectionContents = range.extractContents(); 

    var newDate = new Date; 
    var randomnumber= newDate.getTime(); 

    var div; 

    var imageTag = document.createElement("img"); 
    imageTag.id=randomnumber; 
    imageTag.setAttribute("src","notes.png"); 

    var linkTxt = document.createElement("a"); 
    linkTxt.id=randomnumber; 
    linkTxt.setAttribute("href","highlight:"+randomnumber); 

    linkTxt.appendChild(selectionContents) 

    div = document.createElement("span"); 


div.style.backgroundColor = "yellow"; 
div.id=randomnumber; 

linkTxt.appendChild(imageTag); 
div.appendChild(linkTxt); 

range.insertNode(div); 


    return document.body.innerHTML+"<noteseparator>"+randomnumber+"<noteseparator>"+range.toString(); 
} 

在这里,我正在做一个跨度,这个跨度可以让我突出显示文字和图像。

现在problem是,

当我选择一个段落,它只是增加了一个图像,并没有突出显示文本。 如果我使用div或p标签代替跨度,那么它会为单个单词提供一整行,看起来很奇怪。

回答

1

编辑:div标签将得到一个断行和(通常,大多数浏览器做到这一点,认为这是一个“师” /块级元素)之前之后,你最好使用一个跨度。

其次,你应该选择的内容,追加到跨度

ispain.appendChild(selectionContents)!并且不要忘记分号;)

在旁注中,您知道: 1-您不能拥有以数字开头的html元素ID。 012-2-具有多个具有相同ID的元素在选择em时会变得不可预知。

+0

从两个段落中选择文本时,使用跨度不起作用。 – Ishu