मैं एक स्ट्रिंग में एक चर को लागू करने की कोशिश कर रहा हूँ। मैंने इसकी खोज की है और इस पर अलग-अलग चीजें फेंकने की कोशिश की है लेकिन कुछ भी काम नहीं कर रहा है ..

मेरे पास एक चर है जो इस तरह दिखता है:

http:localhost:8080/Editor/?name=Default 

मुझे मूल्य का उपयोग करने में कोई समस्या नहीं है:

function getQueryVariable(variable) {
                var query = window.location.search.substring(1);
                var vars = query.split("&");
                for (var i = 0; i < vars.length; i++) {
                    var pair = vars[i].split("=");
                    if (pair[0] == variable) { return pair[1]; }
                }
                return (false);
            }

            var name = getQueryVariable("name")

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

 HMI.Builder.init('Files/HMIBuilder/', function () {
                //run code after page/iframe is loaded
            });

मैं जो करना चाहता हूं वह चर को स्ट्रिंग में जोड़ना है फ़ाइलें/एचएमआईबिल्डर/{नाम} यह काम नहीं करता है। इसे इस तरह दिखने की जरूरत है

Files/HMIBuilder/Default

या जो भी चर पारित किया गया है।

3
Scott Purtan 29 अक्टूबर 2019, 20:33

3 जवाब

सबसे बढ़िया उत्तर

आपको नीचे की तरह जावास्क्रिप्ट + प्रतीक का उपयोग करके अपनी स्ट्रिंग को चर के साथ जोड़ना होगा:

HMI.Builder.init('Files/HMIBuilder/' + getQueryVariable("name"), function () {
  //run code after page/iframe is loaded
});

या अधिक पठनीयता के लिए आसान replace का उपयोग करें:

HMI.Builder.init('Files/HMIBuilder/{name}'.replace('{name}', getQueryVariable("name")), function () {
  //run code after page/iframe is loaded
});

बेशक, आप इसे और भी अधिक पठनीयता के लिए दो चरणों के साथ कर सकते हैं:

var route = 'Files/HMIBuilder/{name}'.replace('{name}', getQueryVariable("name"));
HMI.Builder.init(route, function () {
  //run code after page/iframe is loaded
});

अंत में, हाल के ब्राउज़रों पर (और पिछड़े संगतता के लिए कुछ ट्रांसपिलर के साथ), आप ES6 "`" सिंटैक्स का उपयोग कर सकते हैं:

var route = `Files/HMIBuilder/${getQueryVariable("name")}`;
HMI.Builder.init(route, function () {
  //run code after page/iframe is loaded
});
4
guillaumepotier 29 अक्टूबर 2019, 17:42

एक टेम्पलेट शाब्दिक का उपयोग करें

HMI.Builder.init(`Files/HMIBuilder/${getQueryVariable(variable)}`, function () {

            //run code after page/iframe is loaded
        });
2
Jay Lane 29 अक्टूबर 2019, 17:37

आप निम्न फ़ंक्शन चलाकर मापदंडों की एक सूची प्राप्त कर सकते हैं:

function extractParams(url) {
    new URL(url).search.substr(1).split('&').map(x => {
        var y = x.split('=');
        return { [y[0]]: y[1] };
    });
}

var params = extractParams('https://www.website.com?id=151&name=john');

जो निम्नलिखित प्रिंट करेगा

[{id: 151}, {name: "john"}]

0
Oussama Essamadi 29 अक्टूबर 2019, 17:48