我基本上有0次编程经验。所以这是我的问题。我正在使用JS从URL获取一些参数并将其与HTML一起使用,并且它可以工作。
这是代码:
function qs(search_for) {
var query = window.location.search.substring(1);
var parms = query.split('&');
for (var i=0; i<parms.length; i++) {
var pos = parms[i].indexOf('=');
if (pos > 0 && search_for == parms[i].substring(0,pos)) {
return parms[i].substring(pos+1);;
}
}
return "";
}
和HTML
<script type="text/javascript">document.write(qs("name"));</script>
现在,假设我想使用参数的值在页面上生成特定的文本。但是我不想使用Parameter本身,而是使用一种Dictionary来将Parameter与String匹配。
例如 a1:“早上好” b2:“晚上好”
我尝试过这样的事情,没有成功,有人能帮忙吗?:
function qs(search_for) {
var dict = {}
dict[a1] = "Good morning";
dict[b2] = "Good evening";
var query = window.location.search.substring(1);
var parms = query.split('&');
for (var i=0; i<parms.length; i++) {
var pos = parms[i].indexOf('=');
if (pos > 0 && search_for == parms[i].substring(0,pos)) {
if parms[i].substring(pos+1) in dict {
return dict[parms[i].substring(pos+1)];;
}
}
}
return "";
}
提前致谢! →
编辑:为了清楚起见,我不想读取参数“a1”和“b2”。我宁愿想要当某个参数等于“a1”时该函数返回“早上好”,当某个参数等于“b2”时,该函数返回“晚上好”
答案 0 :(得分:1)
你这样做:
function getParam(param){
var both = location.search.replace('?', '').split('&');
for(var i=0,a,l=both.length; i<l; i++){
a = both[i].split('=');
if(a[0] === encodeURIComponent(param)){
return decodeURIComponent(a[1]);
}
}
return undefined;
}
var useInDict = getParam('a1');
假设原始网址编码。
答案 1 :(得分:0)
function parseGETfromUrl ( query = location.search.substring( 1 ) ) {
let parameters = {};
for ( const [ name, value ] of new URLSearchParams( query ) ) parameters[name] = value;
return parameters;
}
//Test code
let paramsString = "q=URLUtils.searchParams&topic=api";
parseGETfromUrl( paramsString ); // { q: "URLUtils.searchParams", topic: "api" }
parseGETfromUrl(); //Same result as above, when url ends with "?q=URLUtils.searchParams&topic=api"
标题函数parseGETfromUrl返回一个包含url查询字符串信息的对象。