我用来从通常具有名字和姓氏.split
的字符串中仅提取名字。只要字符串中存在空格(即名字和姓氏),这很有效,但是当只有名字时,我会将整个字符串加倍。
例子:
我有一个包含名称“John Smith”的字符串。当我使用下面的代码时,它返回“John”。伟大的!但如果字符串只是“John”并且使用了代码,则返回“JohnJohn”。不!
使用这一行,js 将返回 'John'
<p>Name: <span class="vName">John Smith</span></p>
使用这一行,js 将返回 'JohnJohn'
<p>Name: <span class="vName">John</span></p>
和脚本:
<script>
var designerName = $('.vName').text();
designerName = designerName.split(" ")[0];
</script>
它在 jsfiddle 上,使用相同的 jQuery 版本(v1.8.2)可以正常工作:http: //jsfiddle.net/5yrYj/1
运行 Chrome 版本 26.0.1410.64 m。我不明白为什么它在我的脚本中不起作用。
这是完整的功能:
function saveDesign(){
var shaftRender = $('#shaft-image-md').attr('class');
var gripRender = $('#grip-image-md').attr('class');
var labelRender = $('#label-image-md').attr('class');
gripRender = gripRender.toLowerCase().replace(/\b[a-z]/g, function(letter) {
return letter.toUpperCase();
});
labelRender = labelRender.toLowerCase().replace(/\b[a-z]/g, function(letter) {
return letter.toUpperCase();
});
var designerShaft = shaftRender+gripRender+labelRender;
var designerName = $('.vName').text();
//Grab only first name
designerName = designerName.split(" ")[0];
//if((/ /).test(designerName)){ designerName = designerName.split(" ")[0]; }
//designerName = (/ /).test(designerName) ? designerName.split(" ")[0]
//: designerName;
$.post("saveDesign.php",
{
name: designerName,
shaft: designerShaft,
});
//Debug
alert(designerName); //This displays "JohnJohn"
}
无论我使用三个 .split 行中的哪一个,如果原始设计器名称字符串没有姓氏 = 空格,我仍然会得到双重名称。警报也会在那时显示“JohnJohn”。
.split
那么,只有在字符串中有空格的情况下,我才能调用代码?还是有另一种更适合我目的的解决方案?任何帮助将不胜感激。
谢谢。
已解决: html 中有一个额外的 .vName 实例。已删除,现在可以正常工作。感谢 Francisco Afonso 提出这就是问题所在。