我有一个返回的JSON字符串,我已经解析并将其放入一个数组中,然后进行格式化以放入选择下拉列表:
function populateGroups(){
var categories = '';
for( category in gCategories ){
categories += '<option name="' + gCategories[category] + '">' + gCategories[category] + '</option>';
categories.replace(' ', '_');
}
$('select[name="category"]').html(categories);
}
我遇到的问题是选项名称(与值相同)包含我需要用有效的东西替换的空格,例如下划线'_'。
这就是我尝试做categories.replace('','_')的原因;我也试过用正则表达式做这个,虽然我的RegEx不是很好:P
关于如何做到这一点的任何想法?
谢谢!
[注] 这是JSFiddle:http://jsfiddle.net/pKYr4/
答案 0 :(得分:4)
如果您将字符串传递给replace
,它只会替换第一次出现。
您应该使用.replace(/ /g, '_')
代替。 g标志用于全局。
我想你不想在标记字符串上运行它,但仅限于类别,否则你将<option_name=...
可能是这样的:
for (category in gCategories ) {
var noSpaceCategory = gCategories[category].replace(/ /g, '_');
categories += '<option name="' + noSpaceCategory + '">' + gCategories[category] + '</option>';
}
答案 1 :(得分:1)
您可以使用javascript trim删除空格,请参阅:http://blog.stevenlevithan.com/archives/faster-trim-javascript。如果你想用破折号替换它们:
var str = gCategories[category];
str.replace(/\s+/g, '-');
答案 2 :(得分:1)
也许是这样的:
function replaceAll(txt, replace, with_this) {
return txt.replace(new RegExp(replace, 'g'),with_this);
}
可以像这样调用:
replaceAll('1,000,000', ',', '')
可以工作......
答案 3 :(得分:1)
您也应该更新字符串;
categories = categories.replace(/ /g, '_');
......但问题是,不仅因为<option name="...
也会影响格式化/裁剪值。
<option_name="category_value">category_value</option>
这可以通过这种方式解决;
function populateGroups() {
var categories = '';
for( c in gCategories ) {
var categoryValue = gCategories[c].replace(/ /g, '_');
categories += '<option name="' + categoryValue + '">' + gCategories[c] + '</option>';
}
$('select[name="category"]').html(categories);
}