希望公共变量在javascript

时间:2017-01-29 03:42:15

标签: javascript html ip

我正在寻找Localhost IP地址192.168.0.x.我找到了可以找到Localhost IP地址的代码。

但是,我想将值存储到一个变量中,该变量可以让其他函数访问它。像var IPaddress =“192.168.0.x”;

我是新手,我不知道该怎么做。有谁能告诉我?非常感谢

var IPaddress;
$( document ).ready(function() {

    findIP(function(ip) {
        IPaddress = ip
    });

    new QRCode(document.getElementById("qrcode"), "http://google.com");
    console.log(IPaddress);


});




function findIP(onNewIP) { //  onNewIp - your listener function for new IPs
    var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome
    var pc = new myPeerConnection({iceServers: []}),
            noop = function() {},
            localIPs = {},
            ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
            key;

    function ipIterate(ip) {
        if (!localIPs[ip]) onNewIP(ip);
        localIPs[ip] = true;
    }
    pc.createDataChannel(""); //create a bogus data channel
    pc.createOffer(function(sdp) {
        sdp.sdp.split('\n').forEach(function(line) {
            if (line.indexOf('candidate') < 0) return;
            line.match(ipRegex).forEach(ipIterate);
        });
        pc.setLocalDescription(sdp, noop, noop);
    }, noop); // create offer and set local description
    pc.onicecandidate = function(ice) { //listen for candidate events
        if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
        ice.candidate.candidate.match(ipRegex).forEach(ipIterate);
    };
}

function addIP(ip) {
    console.log(ip);

}

3 个答案:

答案 0 :(得分:0)

您还可以将该变量显式设置为window的属性,以使其可全局访问。

findIP(function(ip) {
  window.IPaddress = ip
})

修改

要在全局变量中存储值,只需在全局范围中定义

即可
var ipAddress = getIPAddress() // assumes you have a function for this

window.ipAddress = getIPAddress()

在函数之外声明的任何变量都是全局变量。

// global variable
var someGlobalThing = 'something global'

function someFunction() {
  // local variable
  var someLocalThing = 'something local'
  console.log(someGlobalThing) // logs 'something global'
}

console.log(someLocalThing) // logs undefined

答案 1 :(得分:0)

只需在任何函数外部定义var,它就是全局的,并且可由所有其他函数访问。据说它具有全球范围。

var test = "this is a test";
var test2 = false;

在浏览器中渲染,打开浏览器开发者控制台并输入test,您将看到以下内容。从控制台重置它以证明您有权写入它。

enter image description here

答案 2 :(得分:0)

findIP有异步调用。

在你的例子中,console.log在调用回调函数之前发生。

您希望在回调中放置需要访问ip参数的其他函数:

findIP(function(ip) {
    console.log(ip);
    // other functions
});