You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript技术求助:为每个.randfont类<p>元素分配独立字体

帖子网站:为每个.randfont元素独立分配字体族解决方案

问题背景

我正在搭建一个帖子网站,想要给每个带.randfont类的<p>元素单独分配字体族,但当前代码会给所有该类元素添加同一个字体类,没法逐个设置。尝试获取元素ID存入数组时也出了问题,现有代码如下:

现有HTML代码

{% for poopfact in poopfacts %}
 <div class="col">
        <div class="row">
          <p>{{ poopfact.date }} </p>
          <p class="randfont randfont{{poopfact.id}}" id="{{poopfact.id}}">{{ poopfact.fact }}</p>
          <p> {{ poopfact.author }}</p>
        </div>
{% endfor %}

现有JavaScript代码

$( document ).ready( function() {
          $('.randfont').load(randomizeFonts()) 
          function randomizeFonts() {
            let fonts = ['caveat', 'indieflower', 'nanum', 'pacifico', 'pmarker', 'tangerine'];
            const randfonts = $('.randfont')
            for (let i = 0; i < randfonts.length; i++) {
              var random = fonts[Math.floor(Math.random() * fonts.length)];
              //get the ids of those items and put it into another array
              $(`.randfont`).addClass(random)
              }
          }
});

解决方案

核心问题

循环中每次都选中所有.randfont元素添加类,导致所有元素共用同一个字体;另外.attr("id")仅返回第一个匹配元素的ID,无法直接生成ID数组。

修正后的JavaScript代码

$(document).ready(function() {
  randomizeFonts();
  function randomizeFonts() {
    const fonts = ['caveat', 'indieflower', 'nanum', 'pacifico', 'pmarker', 'tangerine'];
    // 遍历每个.randfont元素,逐个处理
    $('.randfont').each(function() {
      // 随机挑选一个字体类
      const randomFont = fonts[Math.floor(Math.random() * fonts.length)];
      // 给当前元素添加选中的字体类
      $(this).addClass(randomFont);
    });
  }
});

关键改动说明

  • 使用each()方法遍历每个.randfont元素,确保每个元素独立处理
  • $(this)在回调中指向当前遍历的元素,精准操作单个元素,不会影响其他帖子内容
  • 移除了不必要的.load()调用,页面就绪时直接执行字体随机逻辑

可选优化:避免重复添加字体类

如果需要防止同一个元素被添加多个字体类,可以先移除所有已有的字体类,再添加新的:

$('.randfont').each(function() {
  const randomFont = fonts[Math.floor(Math.random() * fonts.length)];
  // 先移除所有字体类,再添加新的
  $(this).removeClass(...fonts).addClass(randomFont);
});

内容的提问来源于stack exchange,提问作者kozendgray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:35:16