如下所示,一段拼接的 html 字符串,想要根据接受到的 value 不同,给不同的 radio 加 checked 属性。
这样写实在太丑了
var value = field.value;
var checked1 = "";
var checked2 = "";
var checked3 = "";
var checked4 = "";
var checked5 = "";
var checked6 = "";
var checked7 = "";
switch(value){
case "1":
checked1 = "checked";
break;
case "2":
checked2 = "checked";
break;
case "3":
checked3 = "checked";
break;
case "4":
checked4 = "checked";
break;
case "5":
checked5 = "checked";
break;
case "6":
checked6 = "checked";
break;
case "7":
checked7 = "checked";
break;
}
var html = ''+
''+
''+
''+
''+
''+
'';
return html;
能用就行
你是个后端吧
没错,我是个后端 o(╥﹏╥)o
赞同
不要拼接 HTML,直接操作 DOM
请教一下,怎么把这坨屎换一个优雅的吃法
把值放数组里面,用下标存取数据
后端通常有模板化的写法,不需要拼接字符串
写的好看有球用,用户又看不到
var someJson ={ } $.each(someJson, function (k, v) { //判断条件 if (){ var ele = ""//html 拼接 } //直接加到 html 里面 $("/> })
var checked = [false,false,false,false]; checked[value] = true
let html = ''; let TimeArr = ['日','周','半月','月','季','半年','年',] for(let i=1;i<7;i++){ if(i==field.value){ html += '' }else{ html += '' } } return html; ================================= 献丑
let value = field.value let h = '' let titleArray = ['日','周','半月'] return titleArray.forEach((e,idx) => { h += `` });
看头像还是个夏娜粉?? 你可以使用 JS 操作 DOM 动态设置,把这些 input 直接写到 html 里,不用带 checked,记得用 class 或 id 把年月日这些区分开。 用 element.checked = true 设置 element 为 checked 状态,然后用 element.removeAttribute('checked'); 移除 element 的这个属性。 然后你再根据 value 设置 checked 状态。例如: var v = field.value; switch(v){ case 1: document.querySelector('.select-year').checked = true; break; case 2: document.querySelector('.select-month').checked = true; break; } 不需要用 JS 构建 direct HTML 的。这种既乱又不好进行扩展。
我来领打脸了,没有跑过就放代码,后面看到的不要抽我脸 ===== function getType(e) { let html = ''; let TimeArr = ['日','周','半月','月','季','半年','年'] for(let i=1;i<=7;i++){ if(i==e){ html += '' }else{ html += '' } } return html; } =====
所以为什么要拼接字符串构建 HTML 呢,前端构建字符串 HTML 前期确实能用,但是是一大坨,后期的扩展性可维护性也很低。比如如果你后期要加东西的话,还得考虑前面的逻辑,然后再对着那一坨 HTML 改。但是如果你动态声明,每个属性显而易见,要改什么属性直接在后面加个操作就行了。前面的 都有解决的代码。 但是如果你确实要构建 HTML,那建议你使用循环,一个一个复制粘贴可能是上古写法。