I have an HTML page which contains:
<select>
dropdown with 3 options with an onchange event to a JS functionHere's the code:
<select onChange="getData(this.value);">
<option value="-">Limba/Language</option>
<option value="ro">Romana</option>
<option value="en">Engleza</option>
</select>
<div id="output">
<script id="widget" type="text/javascript" src="js1.js"></script>
</div>
And here's the JS function:
<script type="text/javascript">
function getData(title)
{
switch(title)
{
case "ro":
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "js1.js";
s.innerHTML = null;
s.id = "widget";
document.getElementById("output").innerHTML = s;
break;
case "en":
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "js2.js";
s.innerHTML = null;
s.id = "widget";
document.getElementById("output").innerHTML = s;
break;
default:
void(0);
}
}
</script>
When I select option 2 or 3 I get this output in my browser: [object HTMLScriptElement]
What I want to do is switch the src property of the script tag based on the value selected in the dropdown element. I want to do this client-side and preferably without any external libraries...
The <script> TagScripts can be placed in the <body> , or in the <head> section of an HTML page, or in both.
We start by creating an empty <script></script> tag in memory as script and then assign the necessary attributes to it src (the URL where the script lives) and the id to identify the script later. Finally, we append the script to our <body></body> tag to actually load it.
The script tag should always be used before the body close or at the bottom in HTML file. The Page will load with HTML and CSS and later JavaScript will load.
The other solution is great :) ...but if you still want to create elements via JavaScript you should use appendChild instead of innerHTML...
Here is what your JavaScript should be :)
<script type="text/javascript">
function getData(title)
{
switch(title)
{
case "ro":
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "js1.js";
s.innerHTML = null;
s.id = "widget";
document.getElementById("output").innerHTML = "";
document.getElementById("output").appendChild(s);
break;
case "en":
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "js2.js";
s.innerHTML = null;
s.id = "widget";
document.getElementById("output").innerHTML = "";
document.getElementById("output").appendChild(s);
break;
default:
void(0);
}
}
</script>
function getData(title){
document.getElementById("widget").src= (title == "ro" || title == "-") ? "js1.js" : "js2.js";
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With