2014-07-13 63 views
1

我的功能是由onchange事件在html select類型輸入中進行的調用。 我分配一個變量的值,但它似乎並沒有得到由該功能,比如說外同名的變量訪問,在$(document).ready()如何從腳本的其餘部分訪問JavaScript函數中的變量?

<select form="submitForm" name="frequency" class="meal-type-select" onchange="getFreqVal(this)"> 
     <option value="O">One Time</option> 
     <option value="D">Daily</option> 
     <option value="W">Weekly</option> 
     <option value="M">Monthly</option> 
     <option value="Y">Yearly</option> 
     <option value="R">Requested</option> 
</select> 

和腳本是這樣的:(有很多更重要的劇本,但我只顯示相關的問題的一部分,使之少嘮嘮)

<script> 
$(document).ready(function() { 

    var freqVal; 


    $('#addPictures').click(function() { 

     alert(freqVal); 

    }); 

}); 

function getFreqVal(sel) 
{ 
    freqVal = sel.value; 
    alert(freqVal); 
} 
</script> 
+0

移動'VAR freqVal直列;'出文檔準備功能的..啓動腳本塊.. – Hardy

回答

2

只要在$(document).ready()之外聲明freqVal即可。基本上,它們是兩種不同的功能。

+0

最短的答案。 – bhatGautam

+0

只是fyi,由兩個不同的函數,我的意思是'$(document).ready()'和'getFreqVal' – darrenb

+0

是的,我明白了。 – bhatGautam

1

您聲明您的變量的函數裏面,所以它不會在函數外可見範圍。你這樣做的方式,這兩個函數都有自己的變量名爲freqVal

可以使用全局變量(的window構件):

<script> 

var freqVal; // here 

$(document).ready(function() { 
    $('#addPictures').click(function() { 
     alert(freqVal); 
    }); 
}); 

function getFreqVal(sel) 
{ 
    freqVal = sel.value; 
    alert(freqVal); 
} 

</script> 
2

可變freqval是getFeqVal的範圍之外()。這是你應該做的:

<script> 
    var freqVal; 
    $(document).ready(function() { 

     $('#addPictures').click(function() { 

      alert(freqVal); 

     }); 

    }); 

    function getFreqVal(sel) 
    { 
     freqVal = sel.value; 
     alert(freqVal); 
    } 
</script> 

這使得freqVal的全局範圍。

1

刪除JavaScript和使用jQuery

$(document).ready(function() { 

    $('.meal-type-select').on('change', function() { 

     // stuff on select change 

    }); 

    $('#addPictures').on('click', function() { 

     var freqVal = $('.meal-type-select').val(); 

    }); 
}); 
相關問題