2016-06-01 5 views
0

JavaScriptの検索とハイライトテキストに問題があります。 たとえば、既存のspan要素と既存のdiv要素があります。 何らかの理由で検索ボタンをクリックするとdiv要素がspan要素の子になるという問題があります。上検索/ハイライトクリック - >既存のdivが既存のスパンでラップされる

function highlightSearch() { 

    $('span').removeClass('highlighted'); 
    var text = document.getElementById('query').value; 
    var query = new RegExp("(\\b" + text + "\\b(?!([^<]+)?>))", "gim"); 
    var e = document.getElementById("searchText").innerHTML; 
    var enew = e.replace(/(<span class='highlighted'>|<\/span>)/igm, ""); 
    document.getElementById("searchText").innerHTML = enew; 
    var newe = enew.replace(query, "<span class='highlighted'>$1</span>"); 
    document.getElementById("searchText").innerHTML = newe; 
} 

チェック問題:JSfiddle

答えて

0

をさて、あなたはこの行にinnerHTMLからすべての</span>タグを削除する:

より良い私は、問題を示すために、JSのフィドルを作成していることを説明するために

var enew = e.replace(/(<span class='highlighted'>|<\/span>)/igm, ""); 

また、</span>.glyphiconです。これが要素がラップされる理由です。

Btw:例外がスローされます。ReferenceError: highlightSearch is not defined

関連する問題