Pertanyaan Memanggil fungsi javascript di file js lain


Saya ingin memanggil fungsi yang didefinisikan dalam file first.js dalam file second.js. kedua file didefinisikan dalam file HTML seperti:

<script type="text/javascript" src="first.js"></script>
<script type="text/javascript" src="second.js"></script>

Saya ingin menelepon fn1() didefinisikan dalam first.js di second.js. Dari jawaban pencarian saya adalah jika first.js didefinisikan pertama adalah mungkin tetapi dari tes saya, saya belum menemukan cara untuk melakukan itu. Terima kasih

Edit:
Berikut ini kode contoh:
second.js

document.getElementById("btn").onclick = function(){
    fn1();
}

first.js

function fn1(){
 alert("external fn clicked");
}

75
2017-09-21 19:19


asal


Jawaban:


Suatu fungsi tidak dapat dipanggil kecuali didefinisikan dalam file yang sama atau yang dimuat sebelum upaya untuk memanggilnya.

Sebuah fungsi tidak dapat dipanggil kecuali dalam lingkup yang sama atau lebih besar dari yang mencoba untuk memanggilnya.

Anda menyatakan fungsi fn1 di first.js, dan kemudian di detik Anda hanya dapat memiliki fn1 ();

1.js:

function fn1 (){
    alert();
}

2.js:

fn1();

index.html:

<script type="text/javascript" src="1.js"></script>
<script type="text/javascript" src="2.js"></script>

Ia bekerja dengan baik :)


101
2017-09-21 19:26



Anda dapat menjadikan fungsi sebagai variabel global di first.js dan lihatlah penutupan  dan jangan memasukkannya document.ready taruh di luar

Anda bisa menggunakan ajax juga

    $.ajax({
      url: "url to script",
      dataType: "script",
      success: success
    });

cara yang sama yang bisa Anda gunakan jquery getScript

$.getScript( "ajax/test.js" )
  .done(function( script, textStatus ) {
    console.log( textStatus );
  })
  .fail(function( jqxhr, settings, exception ) {
    $( "div.log" ).text( "Triggered ajaxError handler." );
});

19
2017-09-21 19:22



1 JS:

function fn(){
   alert("Hello! Uncle Namaste...Chalo Kaaam ki Baat p Aate h...");
}

JS ke-2:

$.getscript("url or name of 1st Js File",function(){
fn();
});

Semoga ini membantu... Selamat Coding.


15
2018-01-19 06:57



first.js

function first() { alert("first"); }

Second.js

var imported = document.createElement("script");
imported.src = "other js/first.js";  //saved in "other js" folder
document.getElementsByTagName("head")[0].appendChild(imported);


function second() { alert("Second");}

index.html

 <HTML>
    <HEAD>
       <SCRIPT SRC="second.js"></SCRIPT>
    </HEAD>
    <BODY>
       <a href="javascript:second()">method in second js</a><br/>
       <a href="javascript:first()">method in firstjs ("included" by the first)</a>
    </BODY>
</HTML>

2
2017-10-23 02:31



Gunakan cache jika server Anda memungkinkannya untuk meningkatkan kecepatan.

var extern =(url)=> {           // load extern javascript
    let scr = $.extend({}, {
        dataType: 'script',
        cache: true,
        url: url
    });
    return $.ajax(scr);
}
function ext(file, func) {
    extern(file).done(func);    // calls a function from an extern javascript file
}

Dan kemudian gunakan seperti ini:

ext('somefile.js',()=>              
    myFunc(args)
);  

Secara opsional, buat prototipe untuk membuatnya lebih fleksibel. Sehingga Anda tidak harus menentukan file setiap kali, jika Anda memanggil fungsi atau jika Anda ingin mengambil kode dari beberapa file.


1
2017-11-02 14:46



window.onload = function(){
    document.getElementById("btn").onclick = function(){
        fn1();
    }
   // this should work, It calls when all js files loaded, No matter what position you have written
});

0
2018-03-14 10:40



Node.js

Node.js saat ini menggunakan sistem module.exports / require. Anda dapat menggunakan babel untuk transpile jika Anda ingin sintaks impor.

// mymodule.js
exports.hello = function() {
  return "TCS";
}

// server.js
const myModule = require('./mymodule');
let val = myModule.hello(); // val is "TCS"   

0
2018-06-30 12:21