Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果字符串中只有一个单词或没有空格,则使用jQuery/Javascript发出拆分字符串的命令_Javascript_Jquery - Fatal编程技术网

如果字符串中只有一个单词或没有空格,则使用jQuery/Javascript发出拆分字符串的命令

如果字符串中只有一个单词或没有空格,则使用jQuery/Javascript发出拆分字符串的命令,javascript,jquery,Javascript,Jquery,我使用.split从通常有名字和姓氏的字符串中只提取名字。只要字符串中有一个空格(即名字和姓氏),这种方法就非常有效,但是当只有一个名字时,整个字符串就会加倍 例如: 我有一个字符串,其中包含名称“John Smith”。当我使用下面的代码时,它返回“John”。伟大的但是如果字符串只是“John”,并且使用了代码,则返回“JohnJohn”。不 有了这一行,js将返回“John” <p>Name: <span class="vName">John Smith</s

我使用
.split
从通常有名字和姓氏的字符串中只提取名字。只要字符串中有一个空格(即名字和姓氏),这种方法就非常有效,但是当只有一个名字时,整个字符串就会加倍

例如:

我有一个字符串,其中包含名称“John Smith”。当我使用下面的代码时,它返回“John”。伟大的但是如果字符串只是“John”,并且使用了代码,则返回“JohnJohn”。不

有了这一行,js将返回“John”

<p>Name: <span class="vName">John Smith</span></p> 
无论我使用三个.split行中的哪一行,如果原始designerName字符串没有姓氏=空格,我仍然会得到双名。此时警报也会显示“JohnJohn”

那么,仅当字符串中有空格时,如何调用
.split
代码?还是有其他更适合我的解决方案?任何帮助都将不胜感激

谢谢


已解决:html中有一个额外的.vName实例。已删除,现在可以正常工作。感谢Francisco Afonso的建议,这就是问题所在。

使用
indexOf
或其他一些函数,首先检查字符串中是否存在空格。检查是否所有浏览器都支持它,因为indexOf可能不适用于IE8或更低版本

if (myvar.indexOf(' ') !== -1) {
    myvar = myvar.split(' ')[0];
} else {
    //No space so ignore...
}
这不是jQuery,也不一定是。jQuery是一个很好的框架,我建议大多数项目使用它,但只要有可能,就尝试使用原生JavaScript。它通常更快,您可以了解更多关于jQuery背后的语言


如果确实要使用jQuery,可能需要尝试
$.inArray()
检查拆分是否有效。

使用
indexOf
或其他一些函数,首先检查字符串中是否存在空格。检查是否所有浏览器都支持它,因为indexOf可能不适用于IE8或更低版本

if (myvar.indexOf(' ') !== -1) {
    myvar = myvar.split(' ')[0];
} else {
    //No space so ignore...
}
这不是jQuery,也不一定是。jQuery是一个很好的框架,我建议大多数项目使用它,但只要有可能,就尝试使用原生JavaScript。它通常更快,您可以了解更多关于jQuery背后的语言

如果您确实想使用jQuery,您可能需要尝试
$.inArray()
检查拆分是否有效。

这个简单(纯javascript)跨浏览器行调用“仅当字符串中有空格时才调用.split代码”(如您所问):

或:

它是一个三元if语句(语法:
(test)?true:false;
),其中
test
在regex
/
(一个空格)上测试
designerName
引用的字符串时返回
true
false

示例。

这个简单的(纯javascript)跨浏览器行调用“仅当字符串中有空格时才调用.split代码”(如您所问):

或:

它是一个三元if语句(语法:
(test)?true:false;
),其中
test
在regex
/
(一个空格)上测试
designerName
引用的字符串时返回
true
false


示例。

您正在使用class=vName的所有元素的文本值。 该类中有两个元素,因此使用它们的值的串联。 所以:“约翰·史密斯”
还有一个bug。

您正在使用class=vName的所有元素的文本值。 该类中有两个元素,因此使用它们的值的串联。 所以:“约翰·史密斯”

还有一个bug。

“John”。split(“”[0]
仍然是
“John”
。您使用的是哪个版本的jquery?目前正在使用jquery v1.8。2@xdazz如果示例中的designerName为“John”,则“.split”返回“JohnJohn”@aethergy这不会发生。
“John”。split(“”[0]
仍然是
“John”
。您使用的是哪个版本的jquery?目前正在使用jquery v1.8。2@xdazz如果示例中的designerName为“John”,则“.split”返回“JohnJohn”@aethergy这不会发生。
.indexOf()
不会返回
true
false
,因此这不起作用。它返回一个数字索引或
-1
@jfriend00 Oops。我脑子里有另一种语言。修复。@Jared谢谢,我会查出来。
String.prototype.indexOf()
在IE8中受支持。您可能将其与
Array.prototype.indexOf()
.indexOf()
混淆。indexOf()不返回
true
false
,因此这不起作用。它返回一个数字索引或
-1
@jfriend00 Oops。我脑子里有另一种语言。修复。@Jared谢谢,我会查出来。
String.prototype.indexOf()
在IE8中受支持。您可能将其与
Array.prototype.indexOf()
混淆。谢谢!我要试一试,糟糕透了。它们都返回“JohnJohn”。你知道是什么原因造成的吗?所以这把小提琴:仍然会在你的电脑上显示一个带有“JohnJohn”的alertbox(在Win7上使用Chrome 26.0.1410.64 m版)???这是一个非常有趣的错误!不,在我的服务器上的代码中,我唯一得到“JohnJohn”结果的地方。每次使用我的代码和你的代码时,JSFIDLE都能正常工作<代码>。在这种情况下,我们需要更多的代码。我的第一个猜测是函数(?)没有到达代码的那一部分。您可以查看错误控制台来搜索错误。您还可以开始放置一些
警报
控制台。在代码中记录
片段,查看代码什么时候做了什么。我还建议使用jslint(而不是jshint)。祝你调试顺利!谢谢我要试一试,糟糕透了。它们都返回“JohnJohn”。你知道是什么原因造成的吗?所以这把小提琴:仍然会在你的电脑上显示一个带有“JohnJohn”的alertbox(在Win7上使用Chrome 26.0.1410.64 m版)???这是一个非常有趣的错误!不,在我的服务器上的代码中,我唯一得到“JohnJohn”结果的地方。JSFIDLE每天都工作得很好
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"
}
if (myvar.indexOf(' ') !== -1) {
    myvar = myvar.split(' ')[0];
} else {
    //No space so ignore...
}
if((/ /).test(designerName)){ designerName = designerName.split(" ")[0]; }
designerName = (/ /).test(designerName) ? designerName.split(" ")[0]
                                        : designerName;