截断循环中文本的字符

问题描述 投票:0回答:1

我在这里遇到了一些问题。

我基本上是在div中循环项目,以便每个项目都有一个可以使用的键,这样当单击一个图标时,会出现一个编辑模式并填充所选项目的数据。

这是有效的,但我想为我的span <span>{{ $node->comment }}</span>添加功能,这样如果文本超过10个字符,它将用'***'替换10个字符后的所有内容。我通过添加element.innerHTML = getValue.substring(0 ,4) + ' *** '尝试了这一点,但它不起作用,并且它改变了使用密钥的功能。

有没有办法替换文本字符并保持循环/键功能?

@foreach($nodes as $key => $node)  


        <div class="uk-width-1-1">
            <div class="uk-grid uk-grid-small">
                <div class="uk-width-2-10">
                {{$node->id}} - {{$node->desc}}
                </div>
                <div class="uk-width-2-10 testLoop">
                    <span>{{ $node->comment }}</span> 
                     <a href="#edit-modal{{ $key }}" data-uk-modal><span class="uk-icon-check"></span></a> 
                </div>
            </div>
        </div>

        <div id="edit-modal{{ $key }}" class="uk-modal"> 
            <div class="uk-modal-dialog">
                <div class="uk-width-1-1">
                    <div class="uk-grid uk-grid-small">
                        <div class="uk-width-2-10">
                        {{$node->id}} - {{$node->desc}}
                        </div>

                        <div class="uk-width-2-10 testLoop">
                            <span>{{ $node->comment }}</span> 
                        </div>
                    </div>
                </div>
            </div>
      </div>
@endforeach

function testLoop() {

var comment = document.getElementsByClassName('testLoop'),
    commentText = comment;

for (var index = 0; index < commentText.length; index++) {
    var element = commentText[index];
    var getValue = element.children[0].innerHTML;

    element.addEventListener('click',function(){
        console.log('click');
    })      
    }       
}
testLoop();
javascript html
1个回答
2
投票

你的子串应该是(0,10)十个字符。

let element = document.getElementById('text')
element.innerText = element.innerText.substring(0,10) + '***'
<span id='text'>Long long long long text</span>

另一种方法

而不是字符长度,使用max-width,并设置你的CSS截断并显示省略号。 CSS为您完成所有工作。

#text {
  max-width: 90px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
<div id='text'>This is a long, long, long string.</div>
© www.soinside.com 2019 - 2024. All rights reserved.