【问题标题】:Java Script split.length return only 1 but why?Javascript split.length 仅返回 1 但为什么呢?
【发布时间】:2014-01-21 11:00:26
【问题描述】:

我有一个关于 java 脚本中的拆分功能的问题。在我的示例中,split.length 方法仅返回“1”,但为什么呢?变量“singleWords”只包含“”(或者换句话说:什么都没有)

代码如下:

var singleWords = jQuery(elementId).text().split(",");
if (singleWords.length == 0) {
  // if case
} else {
  // else case      
}

jQuery(elementId).text() 的值为:“ABC, XYZ, OOP”,singleWords 的值为“”

【问题讨论】:

  • 你能做一个 JSFiddle 来展示这个吗?
  • elementIdjQuery(elementId).text()的值是多少?
  • singleWords 不能包含任何内容,它必须是一个数组,尽管它可能是一个只有一个元素为空字符串的数组。

标签: javascript jquery split


【解决方案1】:

这是因为如果没有找到分隔符,split 函数返回的数组只包含单个元素。

【讨论】:

    【解决方案2】:

    split 返回由原始字符串组成的字符串数组。由于原始字符串中没有分隔符,因此 split 返回一个仅包含原始字符串的数组。因此,数组的长度为 1,因为它只包含一个元素。

    【讨论】:

      【解决方案3】:

      如果您的elementId 变量包含一个元素的id(顾名思义),那么jQuery(elementId) 将返回一个带有no 元素的jQuery 对象,而jQuery(elementId).text() 将是一个空字符串@987654326 @。而一个已经为.split() 的空字符串将返回一个包含一个元素的数组(空字符串),因此singleWords.length 将为1。

      要通过 id 选择元素,您需要 jQuery("#" + elementId):

      var singleWords = jQuery("#" + elementId).text().split(",");
      

      演示:http://jsfiddle.net/s3c3H/

      或者如果您的元素是<input> 元素,您需要使用.val() 而不是.text()

      var singleWords = jQuery("#" + elementId).val().split(",");
      

      演示:http://jsfiddle.net/s3c3H/1/

      此外,代码需要在元素被解析后运行,因此需要将其包含在相关元素之后的脚本块中和/或包装在文档就绪处理程序中。

      【讨论】:

        【解决方案4】:

        函数split 始终返回至少一个元素,当它返回时,该元素与您请求拆分的输入字符串相同。

        【讨论】:

          猜你喜欢
          • 2021-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多