Is it possible to export a value of an variable from one javascript to an other?

export, javascript, jquery, variables

Solution

if the variable `id_menu_bar` is in global scope then it can be used by another script on the page.

jQuery's `$.data()` is also good for storing data against elements and means that you do not need to use a global variable and pollute the global namespace.

EDIT:

In response to your comment, there is a difference in how you declare variables that determines how they are scoped in JavaScript.

Global Variables

Outside of a function declaring a variable like

var myVariable;

or

myVariable;

will make no difference - both variables will have global scope. In fact, the second approach will give a variable global scope, even inside of a function. For example

function firstFunction() {
    // Local scope i.e. scoped to firstFunction
    var localVariable; 

    // Global scope i.e. available to all other JavaScript code running
    // in the page
    globalVariable = "I'm not really hiding";
}

function secondFunction() {
    // I can access globalVariable here but only after
    // firstFunction has been executed
    alert(globalVariable); // alerts I'm not really hiding
}

The difference in this scenario is that the alert will fail and not show the value for `globalVariable` upon execution of `secondFunction()` until `firstFunction()` has been executed, since this is where the variable is declared. Had the variable been declared outside of any function, the alert would have succeeded and shown the value of `globalVariable`

Using jQuery.data()

Using this command, you can store data in a cache object for an element. I would recommend looking at the source to see how this achieved, but it is pretty neat. Consider

  function firstFunction() {
      $.data(document,"myVariable","I'm not really hiding"); 
      globalVariable = "I'm not hiding";
  }

  function secondFunction() {
      // alerts "I'm not really hiding" but only if firstFunction is executed before
      // secondFunction
      alert($.data(document, "myVariable"));

      // alerts "I'm not hiding" but only if firstFunction is executed before
      // secondFunction
      alert(globalVariable);
  }

in this scenario, a string value `"I'm not really hiding"` is stored against the document object using the key string `myVariable` in `firstFunction`. This value can then be retrieved from the cache object anywhere else in the script. Attempting to read a value from the cache object without having first set it will yield `undefined`.

Take a look at this Working Demo for more details.

For reasons not to use Global Variables, check out this article.

Problem

I have made a Web page using jquery and php where all files are used in a modular style. Now I have two JavaScript files which must communicate with each other. One Script generates a variable (id_menu_bar) which contains a number. I want that this variable gets transported to the second JavaScript and is used there. How do I make that? Here the Script menu_bar.js ``` $(document).ready(function() { function wrapper_action(id_menu_bar) { $(".wrapper").animate({height: "0px"}); $("#changer p").click(function() { $(".wrapper").animate({height: "300px"}); }); } $("#select_place li").live("click", function() { var wrapper_id = $(".wrapper").attr("id"); var id_place = this.id; if (wrapper_id != "place") { $("#select_level li").remove(); $("#select_building").load("menu_bar/menu_bar_building.php?placeitem="+id_place, function() { $("#select_building li").click(function() { var id_building = this.id; if (wrapper_id != "building") { $("#select_level").load("menu_bar/menu_bar_level.php?buildingitem="+id_building, function() { $("#select_level li").click(function() { var id_level = this.id; wrapper_action(id_level); }); }); } else if (wrapper_id == "building") {wrapper_action(id_building);} }); }); } else if (wrapper_id == "place") {wrapper_action(id_place);} }); }); ```

Original source