Как я могу разделить одну и ту же функцию на две части? - PullRequest
0 голосов
/ 09 мая 2020

Допустим, у меня есть следующая структура, просто пример:

   (function number1( $ ) {
                    $.fn.abcd = function( options ) {

                            heyyou.find(".123").css({});
                            heyyou.find(".456").css({});

 var delay = 1000;
 var site = "http://url";
 setTimeout(function(){   window.location.href = site; },delay);}
$("#button").on('click', function(){ window.location.href = site;});

                    return this;
                }( jQuery ));

И, как мне кажется, мне нужно сделать что-то вроде этого:

//part1
(function number1( $ ) {
                    $.fn.abcd = function( options ) {

                            heyyou.find(".123").css({});
                            heyyou.find(".456").css({});

                    return this;
                }( jQuery ));
//part2
(function number1( $ ) {
                    $.fn.abcd = function( options ) {

 var delay = 1000;
 var site = "http://url";
 setTimeout(function(){   window.location.href = site; },delay);}
$("#button").on('click', function(){ window.location.href = site;});

                    return this;
                }( jQuery ));

Что я пытаюсь достичь здесь: "part1" будет внутри файла js, который будет помещен внутри заголовка. "part2" - это функция, которую мне нужно вызвать из <script></script> позже в DOM. Дело в том, что обе части используют одну и ту же основную функцию, одна продолжает другую.

Например:

<script src="part1.js"></script>

<body>

<script>//part2</script>
<button id="button">Do something</button>
</body>

Итак, в основном я хочу, чтобы функция запускалась в js файл, то я его sh прикончу с другой части. Я не уверен, как это объяснить, просто мне нужно, чтобы var site вызывался отдельно, так как я собираюсь использовать один и тот же сценарий для разных страниц, мне нужно, чтобы каждая страница вызывала var site с другое значение.

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

EDITED:

Структура должна быть похожей на это:

main js. js:

<header>
 <script>
//part1
(function number1( $ ) {
                    $.fn.abcd = function( options ) {

                            heyyou.find(".123").css({});
                            heyyou.find(".456").css({});

                    return this;
                }( jQuery ));
</script>
</header>

Страница 1:

//part2                                
var site google     

Страница 2:

//part2
var site bing

Страница 3:

//part2
var site yahoo

«// Часть1» выполняется первой и выполняется на каждой странице. «// part2» выполняется позже, и каждая страница будет иметь другой URL-адрес для перенаправления внутри функции «// part2».

В ответ Ehsan:

Это должно быть вот так:

<script type="text/javascript" >
function function1(site) {
  //redirect to site
  alert(site);
}
</script>

<script type="text/javascript" >
function function2() {
  // Do your css thing here.
  site = "http://somethingelse";
  function2(site);
}
</script>
<button onclick="function2()">Click me</button>

1 Ответ

0 голосов
/ 09 мая 2020

Edit - 3

Вы ищете что-то вроде этого.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
  $(document).ready(function() {
    alert(site);
  });
</script>
<script type="text/javascript">
  var site = "google.com";
</script>

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

<script type="text/javascript" >
var site = "http://url";
function function1() {
  // Do your css thing here.
  site = "http://somethingelse";
  function2();
}
</script>
<button onclick="function1()">Click me</button>
<script type="text/javascript" >
function function2() {
  //redirect to site
  alert(site);
}
</script>

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

<script type="text/javascript" >
function function1() {
  // Do your css thing here.
  site = "http://somethingelse";
  function2(site);
}
</script>
<button onclick="function1()">Click me</button>
<script type="text/javascript" >
function function2(site) {
  //redirect to site
  alert(site);
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...