-
zhouxm 数据达人Lv4
发表于2023-11-14 14:02
悬赏1
已解决
如图中1部分是2行单元格,每行显示不同的内容,且第1部分的上面行次字体颜色为黑色,下面行次%数字体颜色为白色,现把1部分中的2行内容合并成2部分中的1行数据中,其中2部分中的内容显示2行(一个单元格中换行),要求2部分中的1行是黑色字体,2行是白色字体,如何能实现
setTimeout(function() {
//设置表格的某一列的字体颜色,参数分别为表格代号,指定列(从0开始),字体颜色,第一行的颜色black
setColcolor("GRID7", 3, "black",1);
function setColcolor(grid, col, color,nonerow) {
debugger;
var GRID7 = document.getElementById(grid.toUpperCase());
var spans = GRID7.getElementsByTagName("span");
var inspan = document.createElement("span");
var collen = GRID7.getElementsByTagName("col").length;
var rowlen = GRID7.getElementsByTagName("tr").length;
var y = col + collen*nonerow;
for (var i = 0; i < rowlen-nonerow; i++) {
var str = spans[i + y].innerHTML;
//获取第一行字符串
var fstrowstr = str.substr(0,str.indexOf('<br'));
console.log(fstrowstr);
//获取第1行的长度
var firstrowlen = fstrowstr.length;
var arr = str.split('');
var len1 = arr.length;
if (len1 !== 0) {
spans[i + y].appendChild(inspan);
addStrOfInspan(inspan);
//设置前两位字颜色
inspan.style.color = color;
var reg = new RegExp(".{1," + len1 + "}");
spans[i + y].innerHTML = spans[i + y].innerHTML.replace(/$/g, addStrAfterInspan(len1)).replace(reg, "");
} else {
y = y - 1;
}
y = y + collen;
}
//添加内部span内容,firstrowlen=动态获取第一行的长度
function addStrOfInspan(inspan) {
var instr = "";
for (var i = 0; i < firstrowlen; i++) {
instr += arr;
}
inspan.innerHTML = instr;
}
//将数组拼接成字符串
function addStrAfterInspan(len) {
var str = "";
for (var i = firstrowlen; i < len; i++) {
str += arr;
}
//除了第1行字体之外的颜色
return '<font color=blue>'+str+'</font>';
}
}
}, 400)
5个回答
chestnut 发表于 2023-11-15 11:54
报表中的数据是取值还是表达式?表元中的内容是怎么拼接的呢?
GRID1.A2^'; '^''^';'^round(GRID1.C2*100,2)^'%'
其中A2是名称,C2是百分比
然后使用显示表达式 self.value.SPLIT("\;").JOIN('\n') 进行换行
本帖最后由 xuhongtao 于 2023-11-20 11:08 编辑
下面
//在脚本客户端中设置
setTimeout(function() {
//设置表格的某一列的字体颜色,参数分别为表格代号,指定列(从0开始),字体颜色,第一行的颜色black
setColcolor("GRID7", 3, "black",1);
function setColcolor(grid, col, color,nonerow) {
debugger;
var GRID7 = document.getElementById(grid.toUpperCase());
var spans = GRID7.getElementsByTagName("span");
var inspan = document.createElement("span");
var collen = GRID7.getElementsByTagName("col").length;
var rowlen = GRID7.getElementsByTagName("tr").length;
var y = col + collen*nonerow;
for (var i = 0; i < rowlen-nonerow; i++) {
var str = spans[i + y].innerHTML;
//获取第一行字符串
var fstrowstr = str.substr(0,str.indexOf('<br'));
console.log(fstrowstr);
//获取第1行的长度
var firstrowlen = fstrowstr.length;
var arr = str.split('');
var len1 = arr.length;
if (len1 !== 0) {
spans[i + y].appendChild(inspan);
addStrOfInspan(inspan);
//设置前两位字颜色
inspan.style.color = color;
var reg = new RegExp(".{1," + len1 + "}");
spans[i + y].innerHTML = spans[i + y].innerHTML.replace(/$/g, addStrAfterInspan(len1)).replace(reg, "");
} else {
y = y - 1;
}
y = y + collen;
}
//添加内部span内容,firstrowlen=动态获取第一行的长度
function addStrOfInspan(inspan) {
var instr = "";
for (var i = 0; i < firstrowlen; i++) {
instr += arr;
}
inspan.innerHTML = instr;
}
//将数组拼接成字符串
function addStrAfterInspan(len) {
var str = "";
for (var i = firstrowlen; i < len; i++) {
str += arr;
}
//除了第1行字体之外的颜色
return '<font color=blue>'+str+'</font>';
}
}
}, 400)
setTimeout(function() {
//设置表格的某一行的字体颜色,参数分别为表格代号,行号(从1开始),第一行的颜色,第二行的颜色
setRowColor("GRID1", 4,'black', 'white');
function setRowColor(grid, rownum,color1,color2){
var tds = $("div[id='"+grid+"'] > table > tbody > tr[row='"+rownum+"'] >td").each(function(){
var spancont = $(this).children("span").html();
//第一行 'br'代表换行
var fstrowstr = spancont .substr(0,spancont .indexOf('<br'));
//剩余内容
var scdrowstr = spancont .substr(spancont .indexOf('<br'));
$(this).children("span").html('<font color='+color1+'>'+fstrowstr +'</font>'+'<font color='+color2+'>'+scdrowstr +'</font>');
});
}
}, 1)