0

var mydomain = collectedDomains[i].email_domainのドメインの値を取得するにはどうすればよいですか。後のボタンクリックイベントで利用できます。

$(document).ready(function() {
$('#email_address').blur(function(){

        var emailAddress = $('#email_address').val().split('@');
        var domain = emailAddress[1];
        var tagMap = {};
           var i = null;
        for (i = 0; collectedDomains.length > i; i += 1) {
            var mydomain = collectedDomains[i].email_domain;               
        }

        var hasTag = function(tagName) {
            return tagMap[tagName];
        };  

    $('#Button1').click(function(){
        //need the value of var mydomain available here
    });
});
4

3 に答える 3

2

これはスコープの問題です。使用する変数を、それを参照する両方の関数の外部で定義する必要があります。このような:

$(document).ready(function() {
    var mydomain = null;

    $('#email_address').blur(function(){

        var emailAddress = $('#email_address').val().split('@');
        var domain = emailAddress[1];
        var tagMap = {};
        var i = null;

        for (i = 0; collectedDomains.length > i; i += 1) {
            mydomain = collectedDomains[i].email_domain;               
        }

        var hasTag = function(tagName) {
            return tagMap[tagName];
        };  
    });

    $('#Button1').click(function(){
        //mydomain equals whatever you set it to in the .blur call
    });
});
于 2012-07-06T17:17:00.567 に答える
1
$(document).ready(function() {

var domain;
// domain is now available in all the functions inside ready block
$('#email_address').blur(function(){

        var emailAddress = $('#email_address').val().split('@');
        var tagMap = {};
        var i = null;
        //See here its without var
        domain = emailAddress[1];
        for (i = 0; collectedDomains.length > i; i += 1) {
            var mydomain = collectedDomains[i].email_domain;               
        }

        var hasTag = function(tagName) {
            return tagMap[tagName];
        };  
   });
    $('#Button1').click(function(){
        //need the value of var mydomain available here
    });
});
于 2012-07-06T17:17:35.980 に答える
0

スコープ内のどこかに変数として入れてください。

$('#email_address').blur(function(){

        var emailAddress = $('#email_address').val().split('@'),
            domain = emailAddress[1],
            tagMap = {},
            i = null,
            mydomain; //VIOLA!

        for (i = 0; collectedDomains.length > i; i += 1) {
            mydomain = collectedDomains[i].email_domain;               
        }

        var hasTag = function(tagName) {
            return tagMap[tagName];
        };  

        $('#Button1').click(function(){
            //need the value of var mydomain available here
        });
});
于 2012-07-06T17:11:58.637 に答える