簡體   English   中英

如何在按鈕單擊時附加和運行腳本 [JAVASCRIPT]

[英]How to append and run script on button click [JAVASCRIPT]

我需要一些幫助。

每次用戶單擊按鈕時,我都需要附加並運行 JS 腳本。 我需要評估一些條件來加載和運行腳本的問題...

我擁有的:

var loadScriptBtn = document.getElementById("loadScript");
loadScriptBtn.onclick = loadScript()

function getCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for (var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') c = c.substring(1, c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  }
  return null;
}

function loadScript() {
  if (getCookie('cookieAccepted')) {
    var serverScript = document.createElement("script");
    serverScript.type = "text/javascript";
    serverScript.src = "http://example.com/myscript";
    document.head.appendChild(serverScript);
  } else {
    alert('Please enable cookies')
  }
}

該腳本已正確附加到正文中,但未執行,我需要它來執行...

我查看了其他問題,但找不到使用 JavaScript 的解決方案,我無法在此問題上使用 Jquery,

謝謝大家的時間!

嘗試創建一個新 div,設置其 innerHTML,然后將這個新 div 添加到 DOM。 就像是:

function loadScript() {
  if (getCookie('cookieAccepted')) {
    var serverScript = document.createElement("script");
    serverScript.type = "text/javascript";
    serverScript.src = "http://example.com/myscript";

    var newdiv = document.createElement('div');
    newdiv.innerHTML = serverScript;
    document.getElementById('target').appendChild(newdiv); //<-- lets say that you have a div called target in your html (<div id="target"></div>)
  } else {
    alert('Please enable cookies')
  }
}

目前,您正在為onclick分配一個字符串。 您想為該函數分配一個引用:

loadScriptBtn.onclick = loadScript;

您可以使用 Jquery.getScript 正確加載腳本文件

$("button").click(function(){
  $.getScript("http://example.com/myscript");
});

https://www.w3schools.com/jquery/ajax_getscript.asp

或者你可以使用純 javascript 來做到這一點,如下所示:

 //I added momentjs after page load. function loadFile() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var s = document.createElement("script") s.innerText = this.responseText;//create script and append innerText document.head.appendChild(s);//add script element to head var test = moment('2016-01-01'); //test inserted js file. console.log(test); } }; xhttp.open("GET", "https://momentjs.com/downloads/moment.min.js", true); xhttp.send();//get url content }
 <div id="demo"> <button type="button" onclick="loadFile()">Load Script</button> </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM