简体   繁体   English

在 laravel 刀片中的 foreach 循环上使用 javascript function

[英]Using javascript function on foreach loop in laravel blade

I want to use javascript for word limit on <p> tags, using foreach loop.我想使用 javascript 作为<p>标签的字数限制,使用 foreach 循环。 It works pretty well but only works on the first data, like this:它工作得很好,但只适用于第一个数据,如下所示:

javascript仅适用于循环后的第一个数据

This is how my foreach seems like:这就是我的 foreach 的样子:

<?php foreach ($khotbah as $key): ?>
  <article class="article-post mb70">
    <div class="post-content">
      <a href="#"><h2 class="post-title">{{$key->title}}</h2></a>
      <ul class="post-meta list-inline">
        <li class="list-inline-item">
          <i class="fa fa-user-circle-o"></i> <a href="#">{{$key->author}}</a>
        </li>
        <li class="list-inline-item">
          <i class="fa fa-calendar-o"></i> <a href="#"><?php $date_created = date_create($key->created_at); echo date_format($date_created,'d F Y H:i')?></a>
        </li>
      </ul>
      <p>{{$key->description}}</p>

      <a href="ringkasan-khotbah/{{$key->id}}" class="btn btn-outline-secondary">Read More</a>
    </div>
  </article><!--article-->
<?php endforeach; ?>

and this is what I'm doing in my javascript:这就是我在 javascript 中所做的:

<script type="text/javascript">
  function truncateText(selector, maxLength) {
    var element = document.querySelector(selector),
        truncated = element.innerText;

    if (truncated.length > maxLength) {
        truncated = truncated.substr(0,maxLength) + '...';
    }
    return truncated;
  }

  document.querySelector('p').innerText = truncateText('p', 107);
</script>

is it possible to use javascript on foreach loop?是否可以在 foreach 循环中使用 javascript? Should I put another method on my javascript so it can be used on foreach loop?我是否应该在我的 javascript 上放置另一种方法,以便它可以用于 foreach 循环?

You need to select all of your paragraphs and apply your truncate to each.您需要 select所有段落并将截断应用于每个段落。

I have commented in the code below:我在下面的代码中发表了评论:

 function truncateText(el, maxLength) { // no need to querySelector here now, // as we have passed in the element let truncated = el.innerText; if (truncated.length > maxLength) { truncated = truncated.substr(0, maxLength) + '...'; } return truncated; } // Run your truncate function when tyhe DOM has loaded document.addEventListener('DOMContentLoaded', (event) => { // select all your P's using querySelectorAll const ps = document.querySelectorAll('p'); // for each p, run your turncate function, passing the *element* ps.forEach((p) => {p.innerText = truncateText(p, 50);}); });
 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget imperdiet odio, hendrerit egestas neque. Pellentesque lobortis pulvinar rutrum. Donec eros eros, fermentum vitae tempus ut, suscipit in ligula. Maecenas et scelerisque erat, suscipit lobortis metus. In aliquet velit ac velit mollis luctus. Sed dapibus arcu eget enim vestibulum elementum. Nunc vel ultrices erat.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget imperdiet odio, hendrerit egestas neque. Pellentesque lobortis pulvinar rutrum. Donec eros eros, fermentum vitae tempus ut, suscipit in ligula. Maecenas et scelerisque erat, suscipit lobortis metus. In aliquet velit ac velit mollis luctus. Sed dapibus arcu eget enim vestibulum elementum. Nunc vel ultrices erat.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget imperdiet odio, hendrerit egestas neque. Pellentesque lobortis pulvinar rutrum. Donec eros eros, fermentum vitae tempus ut, suscipit in ligula. Maecenas et scelerisque erat, suscipit lobortis metus. In aliquet velit ac velit mollis luctus. Sed dapibus arcu eget enim vestibulum elementum. Nunc vel ultrices erat.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget imperdiet odio, hendrerit egestas neque. Pellentesque lobortis pulvinar rutrum. Donec eros eros, fermentum vitae tempus ut, suscipit in ligula. Maecenas et scelerisque erat, suscipit lobortis metus. In aliquet velit ac velit mollis luctus. Sed dapibus arcu eget enim vestibulum elementum. Nunc vel ultrices erat.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget imperdiet odio, hendrerit egestas neque. Pellentesque lobortis pulvinar rutrum. Donec eros eros, fermentum vitae tempus ut, suscipit in ligula. Maecenas et scelerisque erat, suscipit lobortis metus. In aliquet velit ac velit mollis luctus. Sed dapibus arcu eget enim vestibulum elementum. Nunc vel ultrices erat.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget imperdiet odio, hendrerit egestas neque. Pellentesque lobortis pulvinar rutrum. Donec eros eros, fermentum vitae tempus ut, suscipit in ligula. Maecenas et scelerisque erat, suscipit lobortis metus. In aliquet velit ac velit mollis luctus. Sed dapibus arcu eget enim vestibulum elementum. Nunc vel ultrices erat.</p>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM