0

我将如何获得 var mydomain = collectDomains[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 回答