techtonic
techtonic

Reputation: 71

How to pass a Javascript function in a dynamically created div

I want to pass a javascript function to a dynamically created div, like I am attempting below. If I replace the script string with an ordinary string this works, but is there a way to pass a JS script in createTextNode?

    newDiv = document.createElement("div");
    newContent = document.createTextNode("<script type=\"text/javascript\">var pager = new Pager(3); pager.init(); pager.showPageNav('pager', 'pageNavPosition'); pager.showPage(1); </script>");
    newDiv.appendChild(newContent);

TIA

Upvotes: 0

Views: 517

Answers (2)

Birey
Birey

Reputation: 1802

var js=document.createElement('script');
  js.setAttribute("type","text/javascript");
  js.appendChild(document.createTextNode(" var pager = new Pager(3); pager.init(); pager.showPageNav('pager', 'pageNavPosition'); pager.showPage(1); "));
  var newDiv=document.createElement("div");
  newDiv.appendChild(js);
  document.appendChild(newDiv);

Upvotes: 1

SLaks
SLaks

Reputation: 887777

A <script> tag is not a text node.
You need to create a <script> element using document.createElement.

However, you should not do this, unless you're trying to load an external script file dynamically (eg, JSONP)

Upvotes: 1

Related Questions