<el-table-column prop="cycles" label="事项"> <template slot-scope="scope"> <span v-html="scope.row.cycles.replace('正常', '<span style="color: red;">正常</span>')"></span> </template> </el-table-column>如何设置正常为红色,小助理为蓝色,大皮球为黄色
时间: 2024-03-27 22:39:23 浏览: 39
您可以使用 `v-if` 来判断文本内容是否为特定值,然后为其设置不同的样式。例如:
```html
<el-table-column prop="cycles" label="事项">
<template slot-scope="scope">
<span v-if="scope.row.cycles === '正常'" style="color: red;">正常</span>
<span v-if="scope.row.cycles === '小助理'" style="color: blue;">小助理</span>
<span v-if="scope.row.cycles === '大皮球'" style="color: yellow;">大皮球</span>
</template>
</el-table-column>
```
在这个例子中,我们使用了三个 `span` 元素来分别判断文本内容是否为 `'正常'`、`'小助理'` 或 `'大皮球'`,然后为其设置不同的颜色样式。您可以根据需要添加更多的判断语句,来设置更多的颜色样式。
相关问题
<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.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>这个代码为什么会将内容重复出现一次,请优化diamagnetic
这段代码会将内容重复出现的原因是,使用 `v-html` 指令将 `scope.row.cycles` 中的内容作为 HTML 解析,并且在 `v-if` 中将其中的 `'正常'` 替换为一个带有样式的 `<span>` 标签。如果不想出现重复的内容,可以将 `<span>` 标签的样式直接写在 CSS 中,并使用 `v-bind:class` 绑定到 `<span>` 标签上,如下所示:
```
<el-table-column prop="cycles" label="事项">
<template slot-scope="scope">
<span :class="{ 'highlighted': scope.row.cycles.indexOf('正常') !== -1 }">{{ scope.row.cycles }}</span>
</template>
</el-table-column>
```
然后在 CSS 中定义 `.highlighted` 类的样式:
```
.highlighted {
color: red;
}
```
这样就可以达到同样的效果,而且不会出现重复的内容。
阅读全文