2015-10-03 2 views
0

Вот мой код, в котором ниже шаблон комментарий будет заменен новым содержанием. И он работает нормально.замена JavaScript REGEX с содержимым внутри от внешнего текстового файла

Внутри HTML:

<div id="content"> 
    <!-- ### START CONTENT ### --> 
    <p>Some text.</p> 
    <!-- ### END CONTENT ### --> 
</div> 

Javascript Код:

var str = document.getElementById("content").innerHTML; 
    var txt = str.replace(/<!-- ### START CONTENT ### -->([\s\S]*?)<!-- ### END CONTENT ### -->/g, '<div id="example">Some replaced example stuff !!</div>'); 
    document.getElementById("content").innerHTML = txt; 

Но, на мой вопрос .. Я хочу, чтобы заменить большой блок HTML кода вместо <div id="example">Some replaced example stuff !!</div>.

Итак, для этого .. Я планирую сохранить большой блок html-кода внутри текстового файла, и будет вызываться текстовый файл, и содержимое внутри файла будет отображаться при совпадении шаблона.

Можно ли заменить содержимое из внешнего текстового файла?

Примечание: Текстовый файл будет размещен в самой корневой директории ..

Jsfiddle Ссылка: http://jsfiddle.net/Lipak/2efm1o4c/9/

Большой блок HTML код ссылки: http://jsfiddle.net/Lipak/zn8fj5q3/

+1

Конечно. Просто AJAX это. –

+0

Не могли бы вы объяснить это. Спасибо :) –

+0

Почему вы не генерируете HTML через JavaScript, а не обрабатываете его как строку? – Victor

ответ

0

Я бы другой подход , который не требует комментариев HTML и не заменяет regexp. Поместите имя текстового файла, чтобы заменить содержимое с в качестве атрибута данных на элементе:

<div id="content" data-replace-file="foo.html"> 

Найти все соответствующие элементы и сделать замену:

// Find all the elements to be replaced. 
var replace = document.querySelectorAll('[data-replace-file]'); 

// Loop across elements, replacing each one. 
for (var i=0; i<replace.length; i++) { 
    var elt = replace[i]; 
    var file = elt.dataset.replaceFile; 
    $(elt).load(file); 
} 

Если вы настаиваете на своем плане использовать HTML комментарии, то

var elt = document.getElementById("content"); 
var str = elt.innerHTML; 
var regexp = /(<!-- ### START CONTENT ### -->)([\s\S]*?)(<!-- ### END CONTENT ### -->)/; 

if (regexp.test(str)) { 
    $.get("blah.html", function(data) { 
    elt.innerHTML = str.replace(regexp, "$1" + data + "$3");  
    }); 
} 

Вот весь HTML-файл, который отлично работает в моей среде:

<script src="https://code.jquery.com/jquery-2.1.4.js"></script> 

<div id="content"> 
    <!-- ### START CONTENT ### -->replace me<!-- ### END CONTENT ### --> 
</div> 

<button onclick="go()">Go</button> 

<script> 
    function go() { 
    var elt = document.getElementById("content"); 
    var str = elt.innerHTML; 
    var regexp = /(<!-- ### START CONTENT ### -->)([\s\S]*?)(<!-- ### END CONTENT ### -->)/; 

    if (regexp.test(str)) { 
     $.get("blah.html", function(data) { 
     elt.innerHTML = str.replace(regexp, "$1" + data + "$3"); 
     }); 
    } 
    } 
</script> 
+0

Привет, Спасибо за ваш ответ! Но я действительно хочу, чтобы ... прежде всего, когда он будет соответствовать приведенному выше шаблону комментария (START и END) .. тогда содержимое внутри текстового файла должно заменить внутри идентификатора контента. Или, если у вас есть другая идея заменить большой блок кода, используя вышеуказанный код javascript .. скажите, пожалуйста. Спасибо .. :) –

+0

Да, я знаю, это то, что вы на самом деле хотите. Вы описали это в своем вопросе. Я говорю, что это не очень хороший способ сделать это. Возможно, это поможет, если вы объясните свою фактическую проблему, а не то, как вы решили ее решить. Существует много архитектур клиент/сервер, в которых используются различные способы обновления контента на основе аякс-вызовов, но это не один из лучших. Вам также необходимо указать, какие у вас целевые среды. В зависимости от этого могут быть гораздо лучшие, более современные решения, такие как импорт HTML или веб-компоненты. Во всяком случае, см. Обновленный ответ. –

+0

Спасибо! :) На самом деле я создаю простое веб-приложение для преобразования HTML-кода (полностью найти и заменить ситуацию с шаблоном комментариев, например, выше). Там, где пользователь вводит код шаблона html в текстовое поле .. и когда пользователь нажимает кнопку. быть преобразованным кодом. Вот и все. Я новичок в веб-программировании. Не знаю, что это хороший способ сделать. Не могли бы вы направить меня? –

Смежные вопросы