Javascript 限制div中的字符数具有特定的类

Javascript 限制div中的字符数具有特定的类,javascript,html,Javascript,Html,我有一组div,它有一个类名。在这里,我想使用javascript根据类名控制/限制div中显示的字符数。请帮助我解决这个问题。使用javascript中的substring方法 有关用法的详细信息,请参见此处 祝你好运 如果您正在使用jQuery,请按类选择并运行sub-string方法。使用javascript中的substring方法 有关用法的详细信息,请参见此处 祝你好运 如果您正在使用jQuery,请按类选择并运行子字符串方法。以下是jQuery解决方案,用于将.myclasss中的

我有一组div,它有一个类名。在这里,我想使用javascript根据类名控制/限制div中显示的字符数。请帮助我解决这个问题。

使用javascript中的substring方法

有关用法的详细信息,请参见此处

祝你好运


如果您正在使用jQuery,请按类选择并运行sub-string方法。

使用javascript中的substring方法

有关用法的详细信息,请参见此处

祝你好运


如果您正在使用jQuery,请按类选择并运行子字符串方法。

以下是jQuery解决方案,用于将.myclasss中的元素限制为200个字符:

var myDiv = $('.myclass');
myDiv.text(myDiv.text().substring(0,200));
针对所有不支持getElementByClassname的浏览器的纯JavaScript解决方案如下所示:

var i;
var divs = document.getElementsByTagName('div');
for(i=0;i<divs.length;i++) {
  if(divs[i].className == 'myclass') {
    divs[i].innerHTML = divs[i].innerHTML.substring(0,200);
  }
}

请注意,如果div包含标记,纯JavaScript方法可能会创建无效的HTML。正确的方法是迭代div中的子节点。

以下是jQuery解决方案,用于将.myclasss元素限制为200个字符:

var myDiv = $('.myclass');
myDiv.text(myDiv.text().substring(0,200));
针对所有不支持getElementByClassname的浏览器的纯JavaScript解决方案如下所示:

var i;
var divs = document.getElementsByTagName('div');
for(i=0;i<divs.length;i++) {
  if(divs[i].className == 'myclass') {
    divs[i].innerHTML = divs[i].innerHTML.substring(0,200);
  }
}
请注意,如果div包含标记,纯JavaScript方法可能会创建无效的HTML。正确的方法是迭代div中的子节点。

一个尊重现有子元素的版本 我遇到了这个问答,但我正在寻找能够正确处理子元素的东西,而不仅仅是一个子字符串片段。对于那些可能需要这个的人,这里是我整理的东西。基本上,它递归地遍历子元素,克隆它们并将它们附加到一个新的容器中,同时将找到的单词数相加,即按空格分割的文本内容

一旦达到字数限制,它将停止处理/附加新节点。如果最终文本节点的内容将违反字数限制,则节点的文本值将被切片以满足要求

代码期望提供的类名是包含主要文本节点的元素,其中混合了一些其他元素。例如,包装元素将是目标元素:

<p class="wrapping-element">
  Rude alert! An electrical fire has knocked out my voice-recognition unicycle!
  Many Wurlitzers are <strong>missing from my database!</strong> 
  <a href="#shop">Abandon shop!</a>
  This is not a <i>daffodil!</i>
</p>
用法 打电话很简单:

wordlimit(class-name :string, word-limit :int, add-ellipsis :boolean)
因此:

免责声明 可以对上述内容进行改进,以支持复杂的CSS选择器,或者只允许提供实际的元素。当前版本不支持具有指定类名的多个元素

请注意:此代码将删除原始元素,并替换为新样式的克隆。由于代码依赖于,任何已就位的事件侦听器都将丢失,如链接MDN页面中的以下代码段所示:

克隆节点会复制其所有属性及其值,包括内在的内嵌侦听器。它不会复制使用addEventListener添加的事件侦听器或分配给元素属性(例如node.onclick=fn)的事件侦听器

不言而喻,任何现有的活动元素引用被此代码修改的元素也将被破坏。[那为什么要提?Ed.]

我不需要担心保留现有元素,但是如果您需要,重写代码以处理现有元素应该非常简单;而不是克隆和毁灭

尊重现有子元素的版本 我遇到了这个问答,但我正在寻找能够正确处理子元素的东西,而不仅仅是一个子字符串片段。对于那些可能需要这个的人,这里是我整理的东西。基本上,它递归地遍历子元素,克隆它们并将它们附加到一个新的容器中,同时将找到的单词数相加,即按空格分割的文本内容

一旦达到字数限制,它将停止处理/附加新节点。如果最终文本节点的内容将违反字数限制,则节点的文本值将被切片以满足要求

代码期望提供的类名是包含主要文本节点的元素,其中混合了一些其他元素。例如,包装元素将是目标元素:

<p class="wrapping-element">
  Rude alert! An electrical fire has knocked out my voice-recognition unicycle!
  Many Wurlitzers are <strong>missing from my database!</strong> 
  <a href="#shop">Abandon shop!</a>
  This is not a <i>daffodil!</i>
</p>
用法 打电话很简单:

wordlimit(class-name :string, word-limit :int, add-ellipsis :boolean)
因此:

免责声明 可以对上述内容进行改进,以支持复杂的CSS选择器,或者只允许提供实际的元素。当前版本不支持具有指定类名的多个元素

请注意:此代码将删除原始元素,并替换为新样式的克隆。由于代码依赖于,任何已就位的事件侦听器都将丢失,如链接MDN页面中的以下代码段所示:

克隆节点会复制其所有属性及其值,包括内在的内嵌侦听器。它不会复制使用addEventListener添加的事件侦听器或分配给元素属性(例如node.onclick=fn)的事件侦听器

不用说,任何现有的活动元素都引用 被此代码修改的元素也将被破坏。[那为什么要提?Ed.]

我不需要担心保留现有元素,但是如果您需要,重写代码以处理现有元素应该非常简单;而不是克隆和毁灭


您是否使用任何特定的javascript框架,如jQuery?或者您想要一个简单的javascript解决方案?您是否使用任何特定的javascript框架,比如jQuery?或者您想要一个简单的javascript解决方案吗?使用myDiv.htmlmyDiv.html.substring0200;不是更好吗;?我认为.textbla会删除任何格式,对吗?如果您使用jQuery html方法而不是文本,您可能会创建无效的标记和不需要的效果。例如,如果您有一个开始标记,并切断了结束标记。如果div需要包含标记,则解决方案会变得更加复杂。如果要保留标记,必须在div内的元素树上递归迭代,直到达到char限制。这是一个非常好的观点!值得一提的是,如果Ra想保持格式。我想我一定是变傻了。。。通常我会想到这样的事情!是的,我只想保留文本的格式。而且很有效。。谢谢大家。正如奇博格正确地说的,如果它保留了格式,那么就有可能产生无效的HTML。据我所知,这可能会导致一些浏览器进入怪癖模式。如果这是一个您愿意承担的风险,那么这是公平的,但最好只使用.text.html,使用myDiv.htmlmyDiv.html.substring0200;?我认为.textbla会删除任何格式,对吗?如果您使用jQuery html方法而不是文本,您可能会创建无效的标记和不需要的效果。例如,如果您有一个开始标记,并切断了结束标记。如果div需要包含标记,则解决方案会变得更加复杂。如果要保留标记,必须在div内的元素树上递归迭代,直到达到char限制。这是一个非常好的观点!值得一提的是,如果Ra想保持格式。我想我一定是变傻了。。。通常我会想到这样的事情!是的,我只想保留文本的格式。而且很有效。。谢谢大家。正如奇博格正确地说的,如果它保留了格式,那么就有可能产生无效的HTML。据我所知,这可能会导致一些浏览器进入怪癖模式。如果这是一个你愿意冒的风险,那么这是很公平的,但最好还是使用.text。