Подтвердить что ты не робот

Как связать внешний файл javascript onclick кнопки

Файл javascript находится в Public/Scripts/filename.js. У меня есть файл шаблона в template/form.tmpl.html. Корневая папка содержит общедоступные и шаблонные папки

Я хотел бы вызвать файл javascript onClick кнопки в form.tmpl.htm.

  <button type="button" value="Submit" onClick="Call the external js file" >

Спасибо

4b9b3361

Ответ 1

Я должен согласиться с комментариями выше, что вы не можете вызвать файл, но вы можете загрузить JS файл, как это, я не уверен, отвечает ли он на ваш вопрос, но может помочь... о и я Я использовал ссылку вместо кнопки в моем примере...

<a href='linkhref.html' id='mylink'>click me</a>

<script type="text/javascript">

var myLink = document.getElementById('mylink');

myLink.onclick = function(){

    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "Public/Scripts/filename.js."; 
    document.getElementsByTagName("head")[0].appendChild(script);
    return false;

}


</script>

Ответ 2

Если вы хотите, чтобы ваша кнопка вызывала рутину, написанную вами в файле filename.js, вам необходимо отредактировать файл filename.js, чтобы код, который вы хотите запустить, является телом функции. Вы можете вызвать функцию, а не исходный файл. (Исходный файл не имеет точки входа)

Если текущее содержимое вашего файла filename.js:

alert('Hello world');

Ответ 3

Это вполне возможно, я сделал что-то подобное на примере Майка Сава. То, что html-страница и ther shoul будут внешним файлом test.js в той же папке

example.html:

<html>
<button type="button" value="Submit" onclick="myclick()" >
Click here~!
<div id='mylink'></div>
</button>
<script type="text/javascript">
function myclick(){
    var myLink = document.getElementById('mylink');
    myLink.onclick = function(){
            var script = document.createElement("script");
            script.type = "text/javascript";
            script.src = "./test.js"; 
            document.getElementsByTagName("head")[0].appendChild(script);
            return false;
    }
    document.getElementById('mylink').click();
}
</script>
</html>

test.js:

alert('hello world')

Ответ 4

Сначала загружая файл .js, а затем вызывая функцию через onclick, там меньше кодирования, и довольно очевидно, что происходит. Мы будем называть JS файл zipcodehelp.js.

HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Button to call JS function.</title>
</head>
<body>
    <h1>Use Button to execute function in '.js' file.</h1>
    <script type="text/javascript" src="zipcodehelp.js"></script>
    <button onclick="ZipcodeHelp();">Get Zip Help!</button>
</body>
</html>

И содержимое zipcodehelp.js:

function ZipcodeHelp() {
  alert("If Zipcode is missing in list at left, do: \n\n\
    1. Enter any zipcode and click Create Client. \n\
    2. Goto Zipcodes and create new zip code. \n\
    3. Edit this new client from the client list.\n\
    4. Select the new zipcode." );
}

Надеюсь, что это поможет! Ура!

Кен

Ответ 5

Вы можете просто сделать следующее.

Скажем, у вас есть файл JavaScript с именем myscript.js в корневой папке. Добавьте ссылку на исходный файл javascript в свой заголовок вашего html файла.

<script src="~/myscript.js"></script>

JS файл: (myscript.js)

function awesomeClick(){
  alert('awesome click triggered');
}

HTML

<button type="button" id="jstrigger" onclick="javascript:awesomeClick();">Submit</button>

Ответ 6

кажется, что невозможно вызвать функцию во внешнем js файле (тест на chrome версии 63.0.3239.132). Я пробовал это разными способами, но это не может. Я должен использовать прослушиватель событий.

Ответ 7

Вы можете загрузить все ваши скрипты в тег head и все, что ваш script делает в фигурных скобках. Но убедитесь, что вы изменяете область значений переменных, если вы используете эти переменные вне script.

Ответ 8

Добавление динамического script в голову Вы можете написать функцию и добавить элемент script с src пути js file

Ответ 9

Закончилось использованием окна модели вместо окна предупреждения. Выглядит как-то непро с предупреждением, если вы спросите меня.