2009-04-27 19 views
9

फ़ायरबग किसी भी स्थान के साथ "फ़ंक्शन में फ़ंक्शन नहीं" त्रुटि की रिपोर्ट कर रहा है (ठीक है, कुछ भी नहीं 1)। मैं इस त्रुटि के स्रोत को कैसे ट्रैक कर सकता हूं?फ़ंक्शन में वापस नहीं

return not in function 
[Break on this error] return(0) 
javascript:return... (line 1) 

मैं FireBug 1.05 चल रहा हूँ एफएफ 2.0.0.20 पर Ubuntu पर।

मैं एक समाधान कि (इस विन्यास के लिए) काम करता पाया:

var link = document.createElement('a'); 
    link.href='/'; 
    if (childSummary.more) { 
    link.onclick = capture(function(id) { follow(id); }, childSummary.id); 
    } else { 
    link.onclick = capture(function(id) { show(id); }, childSummary.id); 
    } 
    link.appendChild(document.createTextNode(name)); 
    div.appendChild(link); 

    [...] 

function capture(fn, val) { 
    return function() { fn(val); return false; }; 
} 

कोड एक पाश जिसमें आईडी बदल रहा था में था, पर कब्जा समारोह की जरूरत महसूस।

पूर्व में href 'जावास्क्रिप्ट: वापसी 0' था और कैप्चर फ़ंक्शन सीधे एफएन के परिणाम का उपयोग करके झूठी वापसी नहीं कर रहा था, और जब यह सत्य के बराबर लौटा रहा था तो एक रास्ता था। त्रुटि का कारण बनने पर href का मूल्यांकन किया जा रहा था।

href को '#' या '' के रूप में परिभाषित करने के कारण सभी लिंक पहले से ही दिखाई देने लगे हैं। किसी भी लिंक को हाइलाइट करने के कारण सभी को href परिभाषित नहीं किया गया है। यह सबसे आसान लग रहा था।

उत्तर

6

मुझे लगता है कि "जावास्क्रिप्ट: वापसी ..." बता रहा है। मेरा मानना ​​है कि आप, एक लंगर की href विशेषता में एक मान देने के लिए कोशिश कर रहे हैं के रूप में नीचे:

<a href="javascript: return false">Test</a> 

कारण Firebug आप स्थान नहीं बता रही है, क्योंकि यह किसी भी जावास्क्रिप्ट में नहीं है, लेकिन में नहीं बल्कि है डोम में एक लाइनर।

+0

ऐसा लगता है। मैं ऑनक्लिक फ़ंक्शन के साथ एक लिंक उत्पन्न करने और लिंक की href विशेषता सेट करने के लिए जावास्क्रिप्ट का उपयोग कर रहा हूं। ऑनक्लिक फ़ंक्शन इसके संचालन के अंत में झूठा रिटर्न देता है और मैंने सोचा कि यह href को मूल्यांकन करने से रोक देगा। चूंकि यह अभी विफल रहा है, इसलिए मैं सोच रहा हूं कि ऑनक्लिक फ़ंक्शन में कुछ पहले अलग-अलग व्यवहार कर रहा है या नहीं। – dougfelt

+0

क्या हम आपके लिंक के लिए सही कोड देख सकते हैं?"झूठे लौटें" एक onclick के अंदर ठीक है; यह मूल्यांकन किया जा रहा से href बंद हो जाता है। लेकिन आप इसे इस तरह से उपयोग कर रहे हैं, अपने आप में एक href यूआरएल, नहीं अधिक जे एस होना चाहिए। कि यह था http://www.javascripttoolbox.com/bestpractices/#onclick –

+1

यह कैसे उपयोग करने के लिए onclick से एंकर को रोकने के लिए के लिए एक अच्छा विवरण लोड किए जा रहे है। –

1

मैं अनुमान लगा रहा हूं कि इसका मतलब है कि आपके पास अतिरिक्त बंद ब्रेस है, या एक लापता उद्घाटन ब्रेस है।

क्या आपका कोडबेस आपके प्रत्येक वापसी कार्यों के आसपास एक स्पॉट चेक करने के लिए निषिद्ध रूप से बड़ा है? क्या आपके पास एक आईडीई है जो आपके लिए मिलान करने वाले ब्रेसिज़ को हाइलाइट करती है?

4

जावास्क्रिप्ट एक त्रुटि देता है क्योंकि रिटर्न स्टेटमेंट फ़ंक्शन के अंदर नहीं है।

myFunc() { some code; return; } 

जहां सही कोड परिभाषा है::

function myFunc() { some code; return; } 
0

मैं यह मिल गया जब फ़ायरबग में कंसोल विंडो में लिखकर इस के लिए एक संभावित कारण इस तरह के रूप में गलत समारोह परिभाषा है। मैंने सूची में कुछ खोजने के लिए लूप के लिए लिखा था वहां एक मान को आज़माएं और वापस न करें - बस इसे एक चर के लिए असाइन करें और आप कंसोल में ऑब्जेक्ट/मान देख सकते हैं।

0

डैनियल ल्यू के पास डौगफेल का उत्तर है, लेकिन जो लोग इस त्रुटि को प्राप्त करते हैं उन्हें किसी भी वापसी विवरण के लिए भी देखना चाहिए जो किसी फ़ंक्शन में नहीं रहता है। उदाहरण के लिए:

<script type="text/javascript"> 
    alert("I'm JavaScript!"); 
    return false; 
</script> 

return false; किसी भी समारोह के बाहर है, और इस त्रुटि का कारण होगा।

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