2017-02-25 3 views
0

Ich habe eine example.html Datei:Assign HTML-Schnipsel zu JS Variable

<span> 
{{test}} 
</span> 

Und eine main.js Datei:

$("button#test").click(function(event) { 

     var html = '/example.html'; 

     //Replaceing {{test}} in example.html with 'Hello, World!' string 
     var insertProperty = function (string, propName, propValue) { 
      var propToReplace = "{{" + propName + "}}"; 
      string = string 
       .replace(new RegExp(propToReplace, "g"), propValue); 
      return string; 
     } 
     var replacedhtml = insertProperty(html,"test", 'Hello, World!'); 

     return console.log(replacedhtml); 
    }); 

Was ich zur Zeit in Protokoll erhalten:

/example.html 

Was ich erwarten:

<span> 
Hello, World! 
</span> 

Und es sollte eine elegantere Möglichkeit zum Einfügen von Eigenschaften als meine insertProperty Funktion geben.

+1

Schreiben 'var html =‚/ example.html'' erzeugt einen String, anstatt die HTML-Text aus einer Datei abgerufen werden. Sie müssen '$ .ajax' für Letzteres verwenden. – gyre

+0

warum verwenden Sie keine Template-Engines wie ejs, jade –

Antwort

1

Schreiben var html = '/example.html' erstellt eine Zeichenfolge, anstatt den HTML-Text aus einer Datei abzurufen. Verwenden Sie stattdessen $.ajax, um die Datei asynchron anzufordern und etwas mit ihrem Text zu tun.

$('#test').click(function() { 
 

 
    $.ajax({ 
 
    url: '/example.html', 
 
    success: function (html) { 
 

 
     //Replacing {{test}} in example.html with 'Hello, World!' string 
 
     function insertProperty (string, propName, propValue) { 
 
     return string.replace(new RegExp('{{' + propName + '}}', 'g'), propValue) 
 
     } 
 

 
     console.log(insertProperty(html, 'test', 'Hello, World!')) 
 
    } 
 
    }) 
 

 
})

+0

Danke, Sie! Dies funktioniert, sieht jedoch eher wie eine Umgehung aus. Ich bin neu in JS, also kann ich mich irren. –