2012-07-15 11 views
7

मैंने अभी फोनगैप + jQuery मोबाइल और एचटीएमएल 5 का अध्ययन करना शुरू किया है, इसलिए मेरी मूर्खता के साथ अपने तंत्रिका को ढीला मत करो!स्थानीय स्टोरेज से पढ़ना और लिखना?

क्या कोई मुझे बता सकता है कि यह क्यों काम नहीं कर रहा है? जब मैं स्थानीय स्टोरेज से एक चर का उपयोग कर रहा हूं, तो बटन दबाते समय मुझे बस एक खाली स्क्रीन मिलती है, लेकिन एक चर तापमान = "100" का उपयोग करते समय, यह ठीक काम कर रहा है। एंड्रॉइड 4.1।

<script type="text/javascript" charset="utf-8"> 
document.addEventListener("deviceready", onDeviceReady, false); 
function onDeviceReady() { 
    window.localStorage.setItem("temperature", "100"); 
    var temperature = window.localStorage.getItem("temperature"); 
} 
</script> 
<div data-role="content"> 
    <p>Working or not?</p> 
    <button onclick="myFunction()">Try it</button> 
    <p id="testi"></p> 
<script type="text/javascript"> 
    function myFunction() { 
    //var temperature = "100";----> This is working! 
    document.getElementById("testi").innerHTML = temperature; 
    } 
</script> 
</div> 

एक और प्रश्न: विंडोज फोन में पृष्ठों के बीच चर को कैसे संभालें? वे स्थानीय स्टोरेज का समर्थन नहीं कर रहे हैं, तो अगर आपको डीबी कनेक्शन नहीं मिला है तो इसे संभालने का एक और तरीका है?

धन्यवाद!

सामी

+0

मुझे फोनगैग या एंड्रॉइड के साथ अनुभव नहीं हुआ है, लेकिन मुझे पूरा यकीन है कि यह एक गुंजाइश/बंद समस्या है। आप 'ऑनडिवाइस रीडी' फ़ंक्शन के अंदर 'var तापमान' को परिभाषित कर रहे हैं, यह केवल उस दायरे के अंदर परिभाषित है। आप इसे 'myFunction' के अंदर उपयोग नहीं कर सकते क्योंकि उस चर के पास एक पूरी तरह से अलग दायरा है। मैं इसे एक उत्तर के रूप में प्रस्तुत करूंगा, लेकिन 35 मिनट में किसी ने इसका उत्तर कैसे दिया? –

+0

यू बस इसे उत्तर के रूप में सबमिट कर सकते हैं! जावास्क्रिप्ट में "ग्लोबल" चर बनाने का कोई तरीका है, मुझे ऐसा लगता है। मुझे इसे समझने की ज़रूरत है। आपका बहुत बहुत धन्यवाद! – Sami

+0

हां, ब्रायन ने अभी एक उदाहरण बनाया है। मैं कुछ उसके जवाब में जोड़ूंगा और क्योंकि मैं "पूर्ण" उत्तर देने के लिए थोड़ा थक गया हूं। ':)' –

उत्तर

10

temperatureonDeviceReady समारोह के दायरे करने के लिए स्थानीय है। यही है, एक बार समारोह खत्म होने के बाद, यह चला गया है।

// Make it global 
var temperature; 
document.addEventListener("deviceready", onDeviceReady, false); 
function onDeviceReady() { 
    window.localStorage.setItem("temperature", "100"); 
    temperature = window.localStorage.getItem("temperature"); 
} 

या:

आपके पास दो विकल्प

// Retrieve it in myFunction 
function myFunction() { 
    var temperature = localStorage.getItem("temperature"); 
    document.getElementById("testi").innerHTML = temperature; 
} 

समारोह गुंजाइश के उदाहरण का एक अच्छा सूची के लिए, this answer प्रयास करें।

+0

[जावास्क्रिप्ट बंद कैसे काम करता है?] (Http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) भी एक अच्छा संदर्भ है (भले ही यह थोड़ा और अधिक है- उप-कार्यों के लिए गहराई)। –

+0

दोनों धन्यवाद! असल में मैंने कभी जावास्क्रिप्ट का उपयोग करने के लिए मजबूर नहीं किया है, लेकिन मुझे शुरू करना नहीं है, यह हर जगह है ... वैसे, मेरा दूसरा सवाल, विंडोज वातावरण में पृष्ठों के बीच भंडारण कैसे संभालना है? – Sami

+0

'onDeviceReady' फ़ंक्शन के अंदर स्थानीय स्टोरेज से 'तापमान' को पुनर्प्राप्त करने के लिए एक बंद का उपयोग किया जा सकता है यदि आप 'onDeviceReady' फ़ंक्शन' के अंदर बटन के 'क्लिक' ईवेंट के लिए 'addEventListener'' (HTML में 'onclick' लिखने के बजाय) , लेकिन यह सिर्फ जटिल चीजें हो सकती है। @ सैमी मुझे विंडोज फोन के साथ अनुभव नहीं है इसलिए मैं इसे ब्रायन के साथ छोड़ दूंगा। –

संबंधित मुद्दे