2012-04-10 18 views
24

मैं जावास्क्रिप्ट में एक एसवीजी तत्वों को देखने का प्रयास कर रहा हूं। असल में, मैं एक बाइनरी खोज पेड़ खींच रहा हूं, और जब यह बहुत व्यापक हो जाता है, तो मैं ज़ूम आउट करने के लिए व्यूबॉक्स को बदलना चाहता हूं ताकि पेड़ खिड़की में फिट हो। मैं वर्तमान में उपयोग कर रहा हूँ:जावास्क्रिप्ट (कोई पुस्तकालय) के साथ एसवीजी व्यूबॉक्स में हेरफेर करें

if(SVGWidth>=1000){ 
    var a = document.getElementById('svgArea'); 
    a.setAttribute("viewbox","0 0 " + SVGWidth + " 300"); 
} 

HTML है:

<svg id="svgArea" xmlns="w3.org/2000/svg"; xmlns:xlink="w3.org/1999/xlink"; width="1000" height="300" viewBox="0 0 1000 300"> 

मैं भी setAttributeNS का उपयोग कर की कोशिश की है ('अशक्त', ...) लेकिन यह है कि या तो काम करने के लिए नहीं मालूम था। मैंने देखा है कि एक अजीब चीज यह है कि जब मैं चेतावनी देता हूं (ए) यह [वस्तु SVGSVGElement] देता है जो अजीब लगता है। किसी भी मदद की सराहना की है।

+0

क्या मुझे पता है कि आप पुस्तकालयों का उपयोग क्यों नहीं करना चाहते हैं? –

+0

मुझे जोड़ा जाना चाहिए था, एसवीजीविड्थ शायद एक खराब चर नाम है, बस पेड़ की चौड़ाई होनी चाहिए। इसके अलावा, एसवीजी के लिए एचटीएमएल है:

+1

मैं पुस्तकालयों का उपयोग नहीं कर रहा हूं क्योंकि मैं जावास्क्रिप्ट सीखने पर ध्यान केंद्रित कर रहा हूं। मेरी अगली परियोजना मैं पुस्तकालयों में जोड़ूंगा, लेकिन मैंने सोचा कि मूल जावास्क्रिप्ट से शुरू करना सबसे अच्छा होगा। –

उत्तर

45

यह svg के संदर्भ को देखने के लिए अच्छा होगा, लेकिन एक शुद्ध एसवीजी दस्तावेज़ के साथ मेरे लिए काम किया है: क्योंकि viewBox केस-संवेदी है

shape = document.getElementsByTagName("svg")[0]; 
shape.setAttribute("viewBox", "-250 -250 500 750"); 

शायद यह है?

+15

केस संवेदनशील था। Sigh .... –

+5

इसे इस तरह देखो, अगर यह इतना आसान नहीं था, तो यह कठिन होता। और मैंने अब तक वास्तविक svg तत्व विशेषताओं के साथ गड़बड़ करने की कोशिश नहीं की, इसलिए हम दोनों ने कुछ समझ लिया। – Anthony

+4

मैंने भी यही गलती की। –

6

आपको अपने कोड में एक त्रुटि है: "व्यूबॉक्स" "व्यूबॉक्स" से अलग है ... बी अपरकेस में है। कोड को बदलें:

a.setAttribute("viewBox","0 0 " + SVGWidth + " 300"); 
+0

में 'व्यूबॉक्स' लिखने के बावजूद, 'व्यूबॉक्स' विशेषता नहीं है, ठीक है, मुझे लगता है कि अब जिस तरह का जवाब है, सवाल का जवाब देता है। 'बी' कारण था कि यह काम नहीं किया था। हालांकि, user3434597 को पहले @ एंथनी के पुराने उत्तर को पढ़ना चाहिए था। शायद वह इसे हटा देगा। – akauppi