2012-01-14 12 views
30

मेरी वेबसाइट पर:जावास्क्रिप्ट में वर्तमान यूआरएल कैसे बदलें?

http://mywebsite.com/1.html 

मैं

window.location.pathname 

उपयोग करने के लिए यूआरएल के अंतिम भाग प्राप्त करना चाहते हैं:

1.html 

और के बाद से मैं संख्या में अपने सभी वेबपृष्ठ हों मैं वर्तमान यूआरएल में 1 जोड़ना चाहता हूं ताकि जब मैं एक बटन पर क्लिक करूं तो यह मुझे अगले पृष्ठ पर रीडायरेक्ट करेगा:

var url = 'http://mywebsite.com/' + window.location.pathname; 
function nextImage(){ 
url = url + 1; 
} 

कोई विचार क्यों यह काम नहीं कर रहा है?

+0

आप केवल यूआरएल में 1 जोड़ रहे हैं। आपको फ़ाइल नाम के संख्यात्मक भाग को बढ़ाने की आवश्यकता है - # .html – Mark

उत्तर

30

आपका उदाहरण काम नहीं कर रहा था क्योंकि आप इस तरह दिखने वाली स्ट्रिंग में 1 जोड़ने की कोशिश कर रहे हैं: "1.html"। इससे आपको यह "1.html1" मिल जाएगा जो आप नहीं चाहते हैं। आपको स्ट्रिंग के संख्यात्मक भाग को अलग करना होगा और फिर इसे गणित करने से पहले इसे वास्तविक संख्या में परिवर्तित करना होगा। इसे वास्तविक संख्या में प्राप्त करने के बाद, आप इसके मूल्य को बढ़ा सकते हैं और फिर इसे बाकी स्ट्रिंग के साथ जोड़ सकते हैं।

आप एक कस्टम इस तरह समारोह की जगह उपयोग कर सकते हैं एक बढ़ती संख्या के साथ मूल URL के विभिन्न टुकड़ों को अलग करने और संख्या को बदलने के लिए:

function nextImage() { 
    return(window.location.href.replace(/(\d+)(\.html)$/, function(str, p1, p2) { 
     return((Number(p1) + 1) + p2); 
    })); 
} 

फिर आप इस तरह यह कॉल कर सकते हैं:

window.location.href = nextImage(); 
यहाँ

डेमो: http://jsfiddle.net/jfriend00/3VPEq/

यह हर उस URL .html के बाद अंक में से कुछ श्रृंखला में समाप्त होता है के लिए काम करेंगे और आप के रूप में की जरूरत है जहां हल्के ढंग से अलग यूआरएल फॉर्म, आप नियमित अभिव्यक्ति को ट्विक कर सकते हैं।

mi = location.href.split(/(\d+)/); 
no = mi.length - 2; 
os = mi[no]; 
mi[no]++; 
if ((mi[no] + '').length < os.length) mi[no] = os.match(/0+/) + mi[no]; 
location.href = mi.join(''); 

यूआरएल एकाधिक नंबर होता है तो यह पिछले एक बदल जाएगा:

+1

धन्यवाद –

+2

के रूप में आपका काम धन्यवाद मुझे ऐसा नहीं लगता कि आपको धन्यवाद देने के लिए पर्याप्त शब्द हैं :) –

0

यहां तक ​​कि यह क्या आप इस संकेत की कोशिश चाहते करने का एक अच्छा तरीका नहीं है: वर url = एक numer पहले होना चाहिए

function nextImage(){ 
url = url + 1; 
location.href='http://mywebsite.com/' + url+'.html'; 
} 
+0

मुझे लगता है कि वे आपको यह दिखाने की उम्मीद कर रहे थे कि संख्या कैसे प्राप्त करें। –

+0

हाँ यह सच है, लेकिन सामान्य रूप से प्रश्न और समस्या को देखें ... – albanx

0

आप क्या कर रहे हैं "1" (स्ट्रिंग जोड़कर है) अपने यूआरएल में। यदि आप पृष्ठ 2. एचटीएमएल लिंक पृष्ठ 2 एचटीएमएल चाहते हैं तो आपको स्ट्रिंग के 1 को बाहर निकालना होगा, इसमें एक जोड़ें, फिर स्ट्रिंग को फिर से इकट्ठा करें।

क्यों कुछ इस तरह से काम नहीं:

var url = 'http://mywebsite.com/1.html'; 
var pageNum = parseInt(url.split("/").pop(),10); 
var nextPage = 'http://mywebsite.com/'+(pageNum+1)+'.html'; 

NextPage इस मामले में यूआरएल http://mywebsite.com/2.html शामिल होंगे। यदि आवश्यक हो तो फ़ंक्शन में रखना आसान होना चाहिए।

1

यह और अधिक मजबूत है

http://mywebsite.com/8815/1.html 

यह पहले शून्य संख्या का समर्थन करता है:

http://mywebsite.com/0001.html 

Example

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