<el-table-column prop="cycles" label="事项"> <template slot-scope="scope"> <span v-if="scope.row.cycles.indexOf('正常') !== -1"> <span v-html="scope.row.cycles.replace('正常', '<span style="color: red;">正常</span>')"></span> </span> <span v-else>{{ scope.row.cycles }}</span> </template> </el-table-column>这个代码为什么会将内容重复出现一次
时间: 2023-11-16 18:33:01 浏览: 14
这段代码使用了 `v-html` 指令,它会将 `scope.row.cycles` 中的内容作为 HTML 来进行渲染。而在 `v-if` 中,如果 `scope.row.cycles` 包含字符串 `'正常'`,则会将 `'正常'` 替换为一个红色的 `<span>` 标签,从而实现了对“正常”这个词的着色。但由于使用了 `v-html`,这个 `<span>` 标签会被解析为 HTML,从而在页面上渲染出来,导致内容重复出现一次。如果要避免这种情况,可以使用 `v-text` 替换 `v-html`,这样就不会将内容作为 HTML 来解析,而只会将其作为纯文本来显示。
相关问题
<el-container style="height: 100%"> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="index" label="考核指标" width="150"></el-table-column> <el-table-column prop="ymatter" label="负责人" width="120"></el-table-column> <el-table-column prop="cycles" label="事项"> <template slot-scope="scope"> <span v-html="getColor(scope.row.cycles)"></span> </template> </el-table-column> </el-table> </el-container>将事项的第三行内容变为红色
如果您想将事项表格中的第三行(即第三行数据)的内容变为红色,可以使用 `slot-scope` 中的数据 `row` 来获取当前行的数据,然后将第三个属性的值替换为带有红色样式的 span 标签。下面是一个示例代码:
```html
<el-table-column prop="cycles" label="事项">
<template slot-scope="scope">
<span v-html="replaceThirdWordWithRed(scope.row.cycles[2])"></span>
</template>
</el-table-column>
methods: {
replaceThirdWordWithRed(cycles) {
return cycles.replace(/(\S+\s+\S+\s+)(\S+)/, '$1<span style=\'color:red\'>$2</span>');
}
}
```
这里使用了一个新的方法 `replaceThirdWordWithRed`,将字符串中第三个单词替换为带有红色样式的 span 标签。注意,这里使用了正则表达式来匹配第三个单词,然后使用 `$1` 和 `$2` 来引用前两个单词和第三个单词,并将第三个单词替换为带有红色样式的 span 标签。如果您的数据中第三个属性的值不是一个单词,而是一个短语或句子,需要根据具体情况做出调整。
<el-table-column prop="cycles" label="事项" > <template slot-scope="scope"> <span v-if="scope.row.status == '正常' " style="color: red;"></span> </template> </el-table-column>如何判断如果内容包含正常两个字就让正常两个字为红色其他的为黑色
您可以使用 `v-if` 条件渲染语句来判断表格内容中是否包含 "正常",如果包含则将这个关键词用 `<span>` 标签包裹起来并设置为红色,否则不做处理。具体的代码如下:
```
<el-table-column prop="cycles" label="事项">
<template slot-scope="scope">
<span v-if="scope.row.cycles.indexOf('正常') !== -1">
<span style="color: red;">正常</span>
{{ scope.row.cycles.replace('正常', '') }}
</span>
<span v-else>{{ scope.row.cycles }}</span>
</template>
</el-table-column>
```
在这个代码中,我使用了 `indexOf()` 方法来判断表格内容中是否包含 "正常",如果包含则将这个关键词用 `<span>` 标签包裹起来并设置为红色,否则不做处理。我还使用了 `replace()` 方法来将包含 "正常" 的文本从表格内容中移除,以避免重复显示。