Как выполнить скрипт, позвонив по его идентификатору - PullRequest
0 голосов
/ 14 марта 2020

из html ниже, я хотел бы выполнить скрипт, вызвав его идентификатор. Так что, когда идентификатор скрипта вызывается, функция отображения выполняется. Любое другое предложение будет оценено, пока скрипт выполняется только при вызове идентификатора. Спасибо

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
//Here is where I would like to execute the script by calling his id.
//Any other suggestion to make it work will be appreciate
});
</script>

<script type="text/javascript" id="execute">
$(document).ready(function(){
   display();
});
</script>

<!--------------------- Footer -------------------------------->
<script>
function display(){
 $("#show").css("display", "block");
}
</script>
<p id="show" style="display:none">This is a paragraph with little content.</p>
</body>
</html>

Ответы [ 2 ]

3 голосов
/ 14 марта 2020

Это не так, как JavaScript работает.

После включения <script> в DOM выполняется . Однако сам скрипт может определять функции, которые могут быть названы и вызваны позднее (по их имени) любым другим скриптом или элементом на странице, если они имеют доступ к контексту, в котором вы определили свою функцию. ,

Пример:

<script>
  function myFunction() {
    window.alert('I got called!');
  }
</script>

<button onclick="myFunction()">Execute myFunction()</button>

Поэтому вместо использования id сценария я использую имя функции.


Чтобы полностью ответить на ваш вопрос: запуск сценария по идентификатору невозможен, потому что все сценарии выполняются, как только они анализируются браузером (что происходит в хронологическом порядке в DOM), и нет способа повторно запустить их после того, как они уже были выполнены ,

Очевидно, можно утверждать, что вы можете полностью удалить тег <script>, создать новый с тем же содержимым, которое равно , которое будет перезапущено, когда добавлено в DOM. Но, по крайней мере, теоретически, он не повторяет тот же <script>, он работает по другому. Другой экземпляр / <script> tag.

Само собой разумеется, никто не делает этого, поскольку это гораздо более запутанно, чем просто определить функцию и вызвать эту функцию позже.

0 голосов
/ 14 марта 2020

Спасибо за ваше объяснение по DOM. Это поможет мне найти другую альтернативу

<!DOCTYPE html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    </head>
    <body>
        <script>
            $(document).ready(function(){
            var result = window.prompt("Would you like the footer to be display?");
            if(result == "yes"){
            bodyPage1();
            }
            });
        </script>

        <script>
            function bodyPage1(){
                display();
            }
        </script>

        <!--------------------- Footer -------------------------------->
        <script>
            function display(){
                $("#show").css("display", "block");
            }
        </script>
        <p id="show" style="display:none">This is a paragraph with little content.</p>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...