2010-11-20 19 views
52

तो मैं एक स्ट्रिंग और एक पारित चर (जो एक संख्या है) से एक स्ट्रिंग बनाने की कोशिश कर रहा हूं। मैं यह कैसे कर सकता हूं?मैं चर के साथ एक स्ट्रिंग को कैसे जोड़ूं?

मैं कुछ इस तरह है:

function AddBorder(id){ 
    document.getElementById('horseThumb_'+id).className='hand positionLeft' 
} 

तो मुझे लगता है कि 'horseThumb' और एक स्ट्रिंग में एक आईडी कैसे मिलता है?

मैं सभी विभिन्न विकल्पों की कोशिश की, मैं भी googled और है कि मैं की तरह स्ट्रिंग में एक चर सम्मिलित कर सकते हैं सीखने के अलावा इस getElementById("horseThumb_{$id}") < - (मेरे लिए काम नहीं किया, मैं पता नहीं क्यों) मैं उपयोगी कुछ भी नहीं मिला । तो किसी भी मदद की सराहना की जाएगी।

+8

जिस तरह से आपने इसे किया है। लेकिन अगर आप स्पष्ट होना चाहते हैं, तो आप 'id' को' id.toString() 'में बदल सकते हैं। –

+4

हां, आपने इसे सही तरीके से किया है। यदि यह "काम नहीं कर रहा है", तो कुछ और गलत है, जैसे वास्तव में उस आईडी के साथ कोई तत्व नहीं है। –

+1

यह कोड: 'getElementById (" horseThumb _ {$ id} ") 'जावास्क्रिप्ट नहीं है, यह PHP है। इसलिए यही कारण है कि यह आपके लिए काम नहीं करता है। – Domenic

उत्तर

38

आपका कोड सही है। शायद आपकी समस्या यह है कि आप AddBorder फ़ंक्शन पर आईडी नहीं दे रहे हैं, या उस आईडी वाला कोई तत्व मौजूद नहीं है। या ब्राउज़र के DOM के माध्यम से प्रश्न में तत्व के पहुंचने से पहले आप अपना फ़ंक्शन चला रहे हैं।

पहले मामले की पहचान या दूसरे मामले का कारण निर्धारित, समारोह के अंदर पहले लाइनों के रूप में इन जोड़ने के लिए:

alert('ID number: ' + id); 
alert('Return value of gEBI: ' + document.getElementById('horseThumb_' + id)); 

पॉप-अप विंडो हर बार समारोह में कहा जाता है खुल जाएगा यही कारण है, के साथ id का मान और document.getElementById का वापसी मूल्य। यदि आपको आईडी नंबर पॉप-अप के लिए undefined मिलता है, तो आप फ़ंक्शन पर तर्क नहीं दे रहे हैं। यदि आईडी मौजूद नहीं है, तो आपको पहले पॉप-अप में अपना (गलत?) आईडी नंबर मिलेगा, लेकिन दूसरे में null प्राप्त होगा।

तीसरे मामले में क्या होगा अपने वेब पेज इस तरह दिखता है, AddBorder चलाने का प्रयास करते समय यह पृष्ठ अभी भी लोड कर रहा है:

<head> 
<title>My Web Page</title> 
<script> 
    function AddBorder(id) { 
     ... 
    } 
    AddBorder(42); // Won't work; the page hasn't completely loaded yet! 
</script> 
</head> 

इसे ठीक करने के लिए सभी कोड एक onload घटना अंदर AddBorder का उपयोग करता है डाल हैंडलर:

// Can only have one of these per page 
window.onload = function() { 
    ... 
    AddBorder(42); 
    ... 
} 

// Or can have any number of these on a page 
function doWhatever() { 
    ... 
    AddBorder(42); 
    ... 
} 

if(window.addEventListener) window.addEventListener('load', doWhatever, false); 
else window.attachEvent('onload', doWhatever); 
+0

यह कुछ एम्बेडेड जावास्क्रिप्ट इंजनों के लिए काम नहीं करेगा - जैसे कि [एमजेएस ] (https://mongoose-os.com/blog/mjs-a-new-approach-to-embedded-scripting/) - 'एमजेएस कॉलबैक त्रुटि जैसी त्रुटि का कारण बन जाएगा: निहित प्रकार रूपांतरण प्रतिबंधित है'। उस मामले के लिए स्पष्ट प्रकार रूपांतरण का उपयोग करने की आवश्यकता है – N0dGrand87

1

ऐसा ही है जैसा आपने किया था। और मैं आपको इस तरह की मूर्ख चीजों के लिए एक छोटी सी युक्ति दूंगा: जेएस सिंटैक्स आज़माने के लिए बस ब्राउज़र यूआरएल बॉक्स का उपयोग करें। उदाहरण के लिए, इसे लिखें: javascript:alert("test"+5) और आपके पास आपका उत्तर है। आपके कोड में समस्या शायद यह है कि यह तत्व आपके दस्तावेज़ में मौजूद नहीं है ... शायद यह किसी रूप या किसी चीज़ के अंदर है। आप यूआरएल में लिखकर भी इसका परीक्षण कर सकते हैं: javascript:alert(document.horseThumb_5) यह जांचने के लिए कि आपकी गलती कहां है।

19

जावास्क्रिप्ट में "+" ऑपरेटर का उपयोग संख्या जोड़ने या स्ट्रिंग को जोड़ने के लिए किया जाता है। यदि ऑपरेंड में से कोई एक स्ट्रिंग "+" संगत है, और यदि यह केवल संख्या है तो यह उन्हें जोड़ता है।

उदाहरण:

1+2+3 == 6 
"1"+2+3 == "123" 
+4

और बस मस्ती के लिए क्या परिणाम है: '2 +" 3 "- 5'? (कोई धोखाधड़ी नहीं) –

+0

@pst क्या यह NaN है? –

+0

@pst Hehe, अच्छा चाल-प्रश्न। –

4

यह तब हो सकता है क्योंकि जावा स्क्रिप्ट सफेद रिक्त स्थान कभी कभी की अनुमति देता है एक स्ट्रिंग एक संख्या के साथ concatenated है। रिक्त स्थान को हटाने और स्ट्रिंग बनाने का प्रयास करें और फिर इसे GetElementById में पास करें।

उदाहरण:

var str = 'horseThumb_'+id; 

str = str.replace(/^\s+|\s+$/g,""); 

function AddBorder(id){ 

    document.getElementById(str).className='hand positionLeft' 

} 
0

एक और तरीका यह सरल jQuery का उपयोग कर ऐसा करने के लिए।

नमूना:

function add(product_id){ 

    // the code to add the product 
    //updating the div, here I just change the text inside the div. 
    //You can do anything with jquery, like change style, border etc. 
    $("#added_"+product_id).html('the product was added to list'); 

} 

कहाँ product_id जावास्क्रिप्ट वर है और $ (product_id "# जोड़ा _" +) एक div id product_id साथ concatenated, समारोह ऐड से वर है।

सर्वश्रेष्ठ सादर!

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