2012-11-25 14 views
7

ब्राउज़र क्रोमियम है सेट नहीं है यह कोड का एक हिस्सा है: (निश्चित रूप से) अलर्ट संदेश सही मूल्य को दर्शाता है। लेकिन अंक तत्व सही मूल्य नहीं मिलता है, यह वास्तव में खाली हो जाता है। क्या कोई मुझे बता सकता है क्यों?document.getElementById() मान (ubuntu के तहत)</p> <p>मूल्य

यहां बताया गया है कि तत्व तत्व को कैसे परिभाषित किया गया है।

<input type='number' id='points' value='0'/> 

और यहां जावास्क्रिप्ट कोड को पॉप्युलेट करना है।

alert(request.responseText); 

document.getElementById("points").value=request.responseText; 
+1

आप किस तरह तय है कि यह "खाली हो जाता है" करते हैं? क्या * वह मान है जिसे आप सेट करने का प्रयास कर रहे हैं? क्या आप अन्य ब्राउज़र में अपेक्षा करते हैं (और आपने कौन से अन्य ब्राउज़रों का परीक्षण किया है) व्यवहार करते हैं? – Quentin

+0

क्योंकि मैं इसे देखता हूं। जब मैं खाली कहता हूं, मेरा मतलब इनपुट बॉक्स में कोई मूल्य नहीं है। इसमें शुरुआत में 0 होता है, जब अनुरोध किया जाता है, तो यह खाली क्षेत्र में बदल जाता है। –

+0

'value' का उपयोग पूरी तरह से मान्य है। मुझे संदेह है कि समस्या यह है कि 'request.responseText' खाली है। चेतावनी क्या कहती है? – slashingweapon

उत्तर

10

आपकी प्रतिक्रिया लगभग निश्चित रूप से एक स्ट्रिंग है। आप यकीन है कि यह एक नंबर में परिवर्तित हो जाता बनाने की जरूरत है:

document.getElementById("points").value= new Number(request.responseText); 

आप अपने responseText को नज़दीक से देखने लग सकता है।ऐसा लगता है कि आपको एक स्ट्रिंग मिल रही है जिसमें उद्धरण शामिल हैं। यदि आप AJAX के माध्यम से JSON डेटा प्राप्त कर रहे हैं, तो आपके पास JSON.parse() के माध्यम से इसे चलाने के अधिक संगत परिणाम हो सकते हैं।

document.getElementById("points").value= new Number(JSON.parse(request.responseText)); 
+0

बहुत बहुत धन्यवाद। आपका जवाब स्पष्ट और सहायक था। –

+2

JSON संरचना का शीर्ष स्तर तत्व एक सरणी या वस्तु होना चाहिए। इसलिए 'नया नंबर (JSON.parse (...))' संभवतः 'NaN' वापस लौटाएगा। JSON पर –

+0

अच्छा बिंदु। यदि यह सरणी या वस्तु नहीं है, तो क्रोम कम से कम शिकायत करता है। – slashingweapon

1

केवल मामले मैं कल्पना कर सकता है, यदि आप एक वेबकिट ब्राउज़र क्रोम या सफारी और responseText में अपनी वापसी मान की तरह यह चलने वाले, एक स्ट्रिंग मान शामिल हैं। यहाँ है http://jsfiddle.net/BmhNL/2/


मेरे बिंदु, कि मैं एक गलत/डबल इनकोडिंग स्ट्रिंग मान उम्मीद:

कि constelation में, मूल्य (यह खाली मिलेगा)

उदाहरण प्रदर्शित नहीं किया जा सकता है। वेबकिट ब्राउज़र type = number पर अधिक सख्त हैं। अगर वहाँ है "केवल" एक सफेद अंतरिक्ष मुद्दा, आप अप्रत्यक्ष रूप से, Number() निर्माता कॉल करने के लिए की तरह

document.getElementById("points").value = +request.responseText; 
+0

और मैं इसे कैसे ठीक करूं? –

+1

'document.getElementById (" अंक ")। मूल्य = नया नंबर (request.responseText);' – slashingweapon

+2

आपका परीक्षण अमान्य है। ''' 5 '' 'वैध संख्या नहीं है। –

0

समस्या स्पष्ट रूप से नहीं है जावास्क्रिप्ट के साथ की कोशिश कर सकते हैं। कोड के काम को दिखाने के लिए यहां एक त्वरित स्निपेट है।

document.getElementById('points').value = 100; 

http://jsfiddle.net/eqTm2/1/

आप देख सकते हैं, जावास्क्रिप्ट पूरी तरह से इनपुट तत्व के लिए नए मूल्य प्रदान करती है। यदि आप इस मुद्दे पर और विस्तार कर सकते हैं तो यह सहायक होगा।

+1

हालांकि आपका निष्कर्ष सही है, फिर भी आपको यह पता लगाने के लिए अपनी क्रिस्टल बॉल को देखना होगा कि ओपी का क्या अर्थ हो सकता है :) –

+0

नोट करें कि पूछताछकर्ता 'इनपुट प्रकार = संख्या' का उपयोग करता है। आप 'इनपुट प्रकार = टेक्स्ट' –

+0

का उपयोग करें क्षमा करें, मैंने नहीं देखा कि लेखक ने "संख्या" प्रकार के रूप में उपयोग किया था। संपादित। – Karan

3

क्रोम के साथ अपने परीक्षण के अनुसार:

आप एक संख्या के लिए एक number इनपुट सेट है, तो यह ठीक काम करता है।

यदि आप एक स्ट्रिंग में number इनपुट सेट करते हैं जिसमें कोई संख्या नहीं है, तो यह ठीक काम करता है।

यदि आप एक स्ट्रिंग में number इनपुट सेट करते हैं जिसमें एक संख्या और कुछ सफेद स्थान शामिल है, तो यह इनपुट को रिक्त करता है।

आपके पास वास्तव में सर्वर प्रतिक्रिया में डेटा के बाद एक स्थान या एक नई लाइन है जिसके बारे में आप वास्तव में परवाह करते हैं।

इसके बजाय document.getElementById("points").value = parseInt(request.responseText, 10); का उपयोग करें।

0

उपयोग करने का प्रयास,

$('#points').val(request.responseText); 
संबंधित मुद्दे