प्रश्नपास फ़ंक्शन कॉलबैक करने
कैसे किसी कॉलबैक फ़ंक्शन से जहां से उसे बनाया गया था एक स्थानीय चर को बनाए रखने कर सकते हैं?
सरल उदाहरण
मैं एक वीडियो प्लेयर बना रहा हूं। संतृप्ति, विपरीत, और रंग को नियंत्रित करने के लिए इसमें स्लाइडर्स होंगे। जब उपयोगकर्ता स्लाइडर के साथ खेलता है, तो उसे यह स्वीकार करने की आवश्यकता होती है कि कौन सा स्लाइडर बदल गया है और यह किस मूल्य में बदल गया है। समस्या यह है कि स्लाइडर का नाम इस पर निर्माता कॉलबैक के दायरे से एक स्थानीय चर है। यह कॉलबैक स्लाइडर का नाम कैसे बनाए रख सकता है?
एचटीएमएल
<div id="saturation">
<div class="track"></div>
<div class="knob"></div>
</div>
</div>
<div id="contrast">
<div class="track"></div>
<div class="knob"></div>
</div>
</div>
<div id="hue">
<div class="track"></div>
<div class="knob"></div>
</div>
</div>
जे एस
var elements = [
'saturation',
'contrast',
'gamma'
];
for(var i = 0; i < sliders.size(); i++) {
new Control.Slider(
$(elements[i]).down('.knob'),
$(elements[i]).down('.track'), {
onChange: function(value) {
// ERROR: elements[i] is undefined
alert(elements[i] + ' has been changed to ' + value);
}
}
}
यह मैं एक सिंटैक्स त्रुटि दे दी है। – JoJo
मेरा मानना है कि यह करने के लिए सही बात है: ऑन चेंज: फ़ंक्शन() { रिटर्न फ़ंक्शन (मान) { अलर्ट (तत्व [i] + मान); } } (तत्व [i]) – JoJo
इस पर ध्यान देने पर मैंने सोचा कि लेखक रिटर्न स्टेटमेंट को छोड़कर चालाक था; लिस्प जैसी भाषाएं डिफ़ॉल्ट रूप से अंतिम अभिव्यक्ति को वापस कर देती हैं। दुर्भाग्यवश जावास्क्रिप्ट उनमें से एक नहीं है :( –