0

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

日期:

"april-23"
"march-20"

和季节名称:

"springtime"
"winter"

日期用破折号分隔月份和日期。

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

我想将月份或季节分配给一个名为的新变量:

time_of_year

如果我这样做:

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

它会在几个月内工作,但如果我在不包含令牌的季节名称上调用它,它会产生错误吗?

这样做的安全方法是什么?

4

3 回答 3

4

它不会返回错误,但会返回一个长度为 1 的数组。

你可以这样做:

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

这是关于split的文档。

但是,如果你总是想要第一个值而不关心其他值,你可以使用你的原始代码 w/oa 问题:

var time_of_year = $(this).attr('id').split('-')[0]
于 2009-07-20T16:21:48.813 回答
3

mystring.indexOf('-')您可以使用(如果不存在将返回-1)来检查连字符是否存在。但我很确定,如果你在一个不包含该字符的字符上拆分一个字符串,它只会返回原始字符串。

于 2009-07-20T16:20:58.207 回答
0

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

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

这样,您将抓住第一个连字符左侧的项目,并且总会有一个第一个连字符:

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

(注意,我没有对此进行测试,也没有把我的生命押在语法上!但也许这对你来说是一个新鲜的想法。)

编辑:顺便说一句,我认为原始帖子中的示例无论如何都会起作用。拆分应该返回一个长度为 1 的列表,并且您正在抓取第 [0] 个元素,这是完美的。

于 2009-07-20T17:55:00.573 回答