我有两种类型的字符串作为元素的我的HTML标记的ID的:

日期:

"april-23"
"march-20"

和季节名称:

"springtime"
"winter"

的日期有一个短划线分隔月和日。

在季节是一个字,没有其他标记。

我要一个月或一季分配给一个所谓的新变量:

time_of_year

如果我这样做:

var time_of_year = $(this).attr("id").split('-')[0];

它完全可以在几个月内,但如果我把它叫做一个季节名不包含令牌,它会产生一个错误?

什么是做到这一点的安全方法?

有帮助吗?

解决方案

它不返回一个错误,但它确实有一个的长度返回的数组。

您可以做这样的事情:

var splitty = $(this).attr('id').split('-');
if (splitty.length > 1) {
   time_of_year = splitty[0];
}
else {
   // do something else magical here
}

下面是在分裂中的文档。

但是,如果你总是希望第一个值和不关心别人,你可以只使用原密码的W / O问题:

var time_of_year = $(this).attr('id').split('-')[0]

其他提示

您可以检查,看看是否连字符存在使用mystring.indexOf('-')(这将返回-1,如果不存在的话)。但我敢肯定,如果拆分对字符的字符串不包含字符,它只是返回原始的字符串。

你为什么不加入之前执行拆分连字符?你是无论如何抓住了第一个元素。有什么区别,如果它是两个第一或前三个元素?

变种time_of_year = $((本).attr( “ID”)+ ' - X')分裂( ' - ')[0];

您获取项目的第一个连字符的左侧这样,而且总是会有一个第一个连字符:

“四月-23-X” “春天-X”

(请注意,我没有测试这一点,我不是跑马圈地的语法我的生命!但也许它会成为你的新意。)

编辑:顺便说一下,我想在原岗位的例子无论如何都会正常工作。斯普利特应该返回长度为1的列表,而你抓住了[0]'个元素,这是完美的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top