2013-04-19 12 views
7

की संपत्ति 'मान' सेट नहीं कर सकता है मैं एजेक्स अनुरोध का उपयोग कर नियंत्रक को दर्ज टेक्स्ट को पास करने का प्रयास कर रहा हूं। लेकिन मैं athe त्रुटि मिल रही है "Uncaught TypeError: संपत्ति अशक्त का 'मान' सेट नहीं कर सकता" .. जब मैं जे एस फ़ाइल पर अमल करने की कोशिश कीअनचाहे टाइपरर: शून्य

यहाँ HTMLcode है:

<form action=""> 
    <input type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" /> 
    <input type="button" class="searchbox_submit1" name="submit" value="text" onClick="javascript:getSearchText();"> 
</form> 

यहाँ जे एस कोड है :

function getSearchText() { 
    var searchText = document.getElementByName("search").value; 
    h_url=document.getElementById("u").value; 
    var theURL = h_url+'search_all/' + deptid + '/' + searchText + '/1'; 
    $.ajax({ 
     url : theURL, 
     fail: function(){ 
     }, 
     success : function() { 
     }, 
     error:function(){ 
     } 
    }); 
} 

कृपया इसे ठीक करने में मेरी सहायता करें।

+0

संभावित डुप्लिकेट [क्यों jQuery या एक DOM विधि \\ getElementById \\ तत्व नहीं ढूंढती है?] (Http://stackoverflow.com/questions/14028959/why-does-jquery-or-a- dom-method-like-as-getelementbyid-not-find-the-element) –

उत्तर

1

यह इस समारोह

h_url=document.getElementById("u").value; 

आप कुछ 'console.log' का उपयोग कर देखने के लिए क्या वस्तु अशक्त है अपने आप को मदद कर सकते हो रहा है।

+0

मैंने वैश्विक चर के रूप में h_url घोषित कर दिया है .... मुझे विश्वास है कि यह कोई समस्या नहीं है .. – user2218532

+1

क्या यह एक कार्य है? समस्या नहीं है ... – jondiaz

9

आपके पास आईडी u आईडी के साथ कोई तत्व नहीं है। यही कारण है कि त्रुटि होती है। ध्यान दें कि वैश्विक चर document.getElementById("u").value का अर्थ है कि आप इनपुट तत्व का मान u नाम से प्राप्त करने का प्रयास कर रहे हैं और यह आपके कोड में परिभाषित नहीं है।

+0

मैंने वैश्विक चर के रूप में h_url घोषित कर दिया है .... मुझे विश्वास है कि यह कोई समस्या नहीं है .. – user2218532

+3

वैश्विक चर नहीं है। Document.getElementById ("u")। मान का मतलब है कि आप हैं इनपुट 'ele' के साथ इनपुट elemnet का मान प्राप्त करने का प्रयास कर रहा है और यह आपके कोड में परिभाषित नहीं है। –

1

h_url=document.getElementById("u") यहां रिक्त है

कोई तत्व नहीं है के रूप में u

+0

मैंने वैश्विक चर के रूप में h_url घोषित कर दिया है .... मुझे विश्वास है कि इससे कोई समस्या नहीं है .. – user2218532

+0

@ user2218532: मुझे यकीन नहीं है कि आप समझते हैं कि उनका क्या मतलब है। उस त्रुटि का अर्थ यह है कि यह 'document.getElementById (" u ")' रिटर्न (जो 'शून्य' है, जिसका 'मूल्य' गुण नहीं है) की संपत्ति 'मान'' h_url' पर सेट नहीं किया जा सकता है, जिसका अर्थ है कि यह जवाब सही है (ठीक है, होना चाहिए) सही है। –

+0

@ user2218532 लेकिन वहाँ आईडी के साथ कोई तत्व यू परीक्षण के – PSR

2

मैं जानता था कि मैं इस उत्तर के लिए बहुत देर हो चुकी हूँ आईडी के साथ मौजूद हैं, लेकिन मैं इस अन्य करने में मदद मिलेगी जो सामना कर रहे हैं और जो होगा आशा चेहरा।

जैसा कि आपने लिखा है h_url वैश्विक var var var = h_url; है ताकि आप अपनी फ़ाइल में कहीं भी उस चर का उपयोग कर सकें।

  • h_url=document.getElementById("u").value; यहाँ h_url जो उपयोगकर्ता ने अपने खोज बॉक्स पाठ मूल्य के मूल्य होते हैं।

  • document.getElementById ("u"); यह कुछ विशिष्ट ID के साथ आपके फॉर्म फ़ील्ड का पहचानकर्ता है।

  • आपके खोज फील्ड id

    id

    <input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />

  • साथ बिना <input type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />

  • ऑल्टर खोज फ़ील्ड आप पर क्लिक करते हैं submit कि document.getElementById("u").value; है जहाँ से मूल्य लाने की कोशिश करेंगे वाक्य रचनात्मक रूप से सही है लेकिन आपने आईडी को परिभाषित नहीं किया है ताकि वह ret रहे urn null

  • तो, बस सुनिश्चित करें कि आप फॉर्म फ़ील्ड का उपयोग करते समय पहले उस आईडी को परिभाषित करते हैं और अन्य कार्य पत्र करते हैं।

मुझे आशा है कि यह आपकी मदद करेगा और कभी भी Cannot set property 'value' of null त्रुटि प्राप्त नहीं करेगा।

1

यदि कोई भी इसी पृष्ठ पर इस पृष्ठ पर उतरता है, तो मुझे पता चला कि यह त्रुटि तब हो सकती है जब आपकी जावास्क्रिप्ट आपके फॉर्म तैयार होने से पहले हेड में चल रही हो। पृष्ठ के निचले हिस्से में अपनी जावास्क्रिप्ट को स्थानांतरित करने से यह मेरी स्थिति के लिए तय हो जाता है।

+0

अच्छी पकड़। लेकिन जब मैंने स्क्रिप्ट को नीचे ले जाया, तो मुझे अब कोई त्रुटि नहीं मिली, लेकिन मैंने अभी भी फ़ील्ड पूरे किए हैं (बिल्कुल खाली नहीं)। – WilliamK

2

समस्या यह है कि आपको आईडी u आईडी के साथ कोई तत्व नहीं मिला है ताकि आप ऐसा कुछ कह रहे हों जो मौजूद नहीं है।
यह ठीक करने के लिए कि आपको तत्व में आईडी जोड़नी है।

<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" /> 


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

अंत में एक चेतावनी है कि W3Validator अंत में "/" के कारण कहेंगे। :

For the current document, the validator interprets strings like according to legacy rules that break the expectations of most authors and thus cause confusing warnings and error messages from the validator. This interpretation is triggered by HTML 4 documents or other SGML-based HTML documents. To avoid the messages, simply remove the "/" character in such contexts. NB: If you expect <FOO /> to be interpreted as an XML-compatible "self-closing" tag, then you need to use XHTML or HTML5.

निष्कर्ष में यह कहता है कि आपको स्लैश को हटाना होगा। बस इसे लिखें:

<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..."> 
3

समस्या हो सकती है जहां कोड निष्पादित किया जा रहा है। यदि आप जावास्क्रिप्ट को निष्पादित करने वाले दस्तावेज़ के प्रमुख में हैं, तब भी जब आपके पास अपने वेब पेज में id = "u" वाला कोई तत्व है, तो DOM लोड होने से पहले कोड निष्पादित हो जाता है, और इसलिए HTML में से कोई भी वास्तव में मौजूद नहीं है। .. आप अपने कोड को क्लोजिंग एचटीएमएल टैग के ठीक ऊपर पृष्ठ के अंत में ले जाकर इसे ठीक कर सकते हैं। JQuery का उपयोग करने के लिए यह एक अच्छा कारण है।

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