2016-09-20 50 views
0

我试图利用一个简单的JS数组中的每个第一个字母每一个字, 代码在控制台日志工作正常 - 但不是在输出如何把握在JS数组

感谢。

<select id="selectId"> 
<option value="hello">one</option> 
<option value="hello">two</option> 
<option value="hello">three</option> 

var arr=[]; 
$("#selectId >option").each(function() { 

    arr.push(this.text.substr(0,1).toUpperCase() + this.text.substr(1)); 

}); 
var i, len, text; 
for (i = 0, len = arr.length, text = ""; i < len; i++) { 

    console.log(arr[i]); 
    $("#select").text(arr[i]); 
} 

fiddle

+2

没有与id的元素'select' –

+1

......而你尝试编辑的选择的文本元素,而不是选项。 –

+1

不要'.push()'在each()'里面。 'map()'完全是为了这些目的而设计的。 –

回答

0

var arr=[]; 
 
$("#selectId >option").each(function() { 
 

 
    arr.push(this.text.substr(0,1).toUpperCase() + this.text.substr(1)); 
 

 
}); 
 
var i, len, text; 
 
for (i = 0, len = arr.length, text = ""; i < len; i++) { 
 

 
    console.log(arr[i]); 
 
    $("#select").text(arr[i]); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script> 
 
<select id="selectId" style="text-transform: capitalize;"> 
 
<option value="hello">one</option> 
 
<option value="hello">two</option> 
 
<option value="hello">three</option>

+0

其工作检查请参阅控制台 –

+0

为什么'.map'而不是'.each'? – vlaz

+0

是的,我们也可以使用地图。 –

0
<select name="selectId"> 
<option value="hello">one</option> 
<option value="hello">two</option> 
<option value="hello">three</option> 

一个阵列

var selected = $('select[name="selectId"]').map(function(){ 
    if ($(this).val()) 
     return $(this).val(); 
}).get(); 

现在使用String.toUpperCase()在第一选择所有下拉值

var upperCasedArray = $.map(array, function(item, index) { 
    return item.toUpperCase(); 
}); 
+0

谢谢!得到它了! – user3387719

1

添加一个类中的CSS

.capitalize{text-transform: capitalize;}

和HTML添加等。无论您想驾驭。

+0

事实上,这是一个很好的选择注意(和在这个例子中使用的一个),但它不回答这个问题,这可能是一个简化的情况:) –

+0

那么,这是最干净的答案。我不知道OP是否想要一个特定的JavaScript或jQuery的答案,但也许他甚至不知道这个CSS属性。 +1 –

+0

请注意,这是一个仅显示解决方案 - 如果OP是想要存储或以其他方式操作的大写内容,实际内容仍然是小写 - 它只是在本例中呈现为大写。 – gavgrif

0

使用substring而不是substr。 Substring被更多的浏览器所理解。 另一种解决方案:

function capitalizeFirstLetter(string) { 
return string.charAt(0).toUpperCase() + string.slice(1); 
} 
0

您需要编辑每个选项的文字,而不是这并不意味着实际上什么“选择的文本”。

$("#selectId > option").each(function() { 
    $(this).text(
     this.text.substr(0,1).toUpperCase() + this.text.substr(1) 
    ); 
}); 

为了简单起见,我删除了中间数组。

0

老实说你不需要为这个像jQuery的lib:

var arr = Array.prototype.map.call(document.querySelector("#selectId").options, function (option) { 
 
    var text = option.textContent; 
 
    return option.textContent = text.substr(0, 1).toUpperCase() + text.substr(1); 
 
}); 
 

 
console.log(arr);
<select id="selectId"> 
 
    <option value="hello">one</option> 
 
    <option value="hello">two</option> 
 
    <option value="hello">three</option> 
 
</select>