我正在尝试从页面中的网址获取一些值。我没有得到一个数组,而是一个逗号分隔的字符串。它适用于控制台,但不适用于网站。
这是网址:
mysite.com/index.html?tags=tag2+tag1
这是我的html标题:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://www.parsecdn.com/js/parse-latest.js"></script>
<script type="text/javascript" src="home_recipes_js.php"></script>
这是js代码:
checkDocumentReady();
function checkDocumentReady() {
$(document).ready(function() {
var tagsString = getUrlVars()["tags"];
tagsParser(tagsString);
});
}
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
function tagsParser(tagsString) {
var rawTags = tagsString.split('+');
console.log('rawTags : ' + rawTags.length + ' ' + rawTags);
}
这是控制台输出:
tagsString: 2 tag2,tag1
我做错了什么?
答案 0 :(得分:3)
试试这个
console.log(rawTags);
你会得到一个数组。
当JavaScript将数组连接到字符串时,实际上会调用数组上的.join(',')
,因此在您的代码中
console.log('rawTags : ' + rawTags.length + ' ' + rawTags);
解释程序将其转换为
console.log('rawTags : ' + rawTags.length + ' ' + rawTags.join(','));
这就是你最后得到一个字符串的原因。否则你的代码就可以了。
即便如此,您仍希望以相同的方式将其视为数组,并在数组中使用 JSON.stringify() ,例如:
console.log('rawTags : ' + rawTags.length + ' ' + JSON.stingify(rawTags));
它将保留括号表示法,但它不会成为一个数组。