2017-01-29 8 views
0

ローカルホストのIPアドレス192.168.0.xを探しています。私はLocalhostのIPアドレスを見つけることができるコードを見つけました。JavaScriptで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); 

} 
+0

誰も私を助けることができますか? –

答えて

0

はまた、明示的にそれをグローバルにアクセス可能にするためにwindowのプロパティとしてその変数を設定することができます。

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

編集

宣言しています

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

または

window.ipAddress = getIPAddress() 

任意の変数を、グローバル変数に値を格納ちょうどグローバルスコープでそれを定義するには関数iの外側グローバル変数。

+0

私はIPaddress変数の値にアクセスできませんが、 "undefine"となっています –

+0

変数に値を格納し、その変数を他の関数で使用したい –

+0

これはあなたの質問ではっきりしませんでした。編集された答え。 – shadymoses

0

varを任意の機能の外に定義するだけで、グローバルで他のすべての機能からアクセスできます。これはグローバルスコープを持つと言われています。

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

、お使いのブラウザでレンダリングあなたのブラウザのデベロッパーコンソールとタイプtestを開き、あなたは以下を取得します。それをコンソールからリセットして、自分が書き込み権限を持っていることを証明してください。

enter image description here

0

findIPは、非同期呼び出しを持っています。

例では、console.logはコールバック関数が呼び出される前に発生します。あなたは、コールバック内のIP引数にアクセスするために必要な他の機能を置きたい

findIP(function(ip) { 
    console.log(ip); 
    // other functions 
});  
関連する問題