Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to replace Current script tag with HTML contents generated by the same script

I want to replace the current script tag with the HTML contents generated by the same script. That is, my Page is

 <html>
    <body>
       <div>
         <script src="myfile1.js"></script>
       </div>
       <div>
         <script src="myfile1.js"></script>
       </div>
    </body>
 </html>

Inside each .js file corresponding html contents are generated. I want to put the contents as the innerHTML of the parent div. But can't set id for the parent div because the page is not static. So the current script tag must be replaced with the HTML content. How can I do this?

For each script tag src is the same. So can't identify with src. These scripts displays some images with text randomly. Scripts are the same but displays different contents in divs on loading

Please help me

like image 359
ajay Avatar asked May 24 '11 10:05

ajay


People also ask

How do I replace a script tag?

Like the other answers have outlined the only way to replace a script is to locate it, place a new one after it and then remove the original. Save this answer. Show activity on this post. you can set the id for script tag and change the content based on the id instead of replacing it with new one.

Can I have 2 script tags?

An HTML page can contain multiple <script> tags in the <head> or <body> tag. The browser executes all the script tags, starting from the first script tag from the beginning.

Can you put HTML in script tag?

The <script> tag can be placed in the <head> section of your HTML or in the <body> section, depending on when you want the JavaScript to load.

How do you link a script tag in HTML?

We can link JavaScript to HTML by adding all the JavaScript code inside the HTML file. We achieve this using the script tag which was explained earlier. We can put the <script></script> tag either inside the head of the HTML or at the end of the body.


3 Answers

try inside of myfile1.js:

var scripts = document.getElementsByTagName( "script" );
for ( var i = 0; i < scripts.length; ++ i )
{
   if ( scripts[i].src == "myfile1.js" )
   {
      scripts[i].parentNode.innerHTML = "new content";
   }
}
like image 120
atlavis Avatar answered Oct 17 '22 03:10

atlavis


This is a great question for those trying to implement a JSONP widget. The objective is to give the user the shortest possible amount of code.

The user prefers:

<script type="text/javscript" src="widget.js"></script>

Over:

<script type="text/javscript" src="widget.js"></script>
<div id="widget"></div>

Here's an example of how to achieve the first snippet:

TOP OF DOCUMENT<br />

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
// inside of widget.js
document.write('<div id="widget"></div>');
$(document).ready(function() {
    $.getJSON('http://test.com?remote_call=1', function(data) {
        $('#widget').html(data);
    });
});

<br />BOTTOM OF DOCUMENT

Have a look at: http://alexmarandon.com/articles/web_widget_jquery/ for the correct way to include a library inside of a script.

like image 35
thealexbaron Avatar answered Oct 17 '22 03:10

thealexbaron


document.currentScript has been available since 2011 on Firefox and 2013 on Chrome.

document.currentScript documentation at MDN

<!DOCTYPE html>
<meta charset="UTF-8">
<title>currentScript test</title>

<h1>Test Begin</h1>

<script>
  document.currentScript.outerHTML = "blah blah";
</script>

<h1>Test End</h1>
like image 45
JukkaP Avatar answered Oct 17 '22 03:10

JukkaP