问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在JS中如何实现让动态添加后的表格TD继承TABLE的class

发布网友 发布时间:2022-05-05 18:51

我来回答

3个回答

懂视网 时间:2022-04-20 14:12

本篇文章给大家带来的内容是关于React-JSX中如何实现Class与Style的动态绑定(附实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

摘要:操作元素的 class 列表和内联样式是数据绑定的一个常见需求,频繁操作dom元素会降低javascript性能,为了实现高性能js,动态绑定class和style是高素养程序员的必选。本文以React-JSX语法为基础,结合其它框架的实现方法,介绍如何实现ClassName 与 Style 的动态绑定。

注:本文实例都已经过验证,错误的请广大道友批评指正

绑定 HTML Class

对象语法

我们可以传给 className 一个对象,以动态地切换 class:

注:使用类似vue、小程序等对象语法是不支持的

错误例子:

render(){
 return <p className={ 'box-color':this.state.isError }>hello world</p>
}

可以实现的语法如下:

1、使用逻辑运算符

css文件

.box-color {
 color:red;
}

js文件

render(){
 return <p className={ this.state.isError && 'box-color' }>hello world</p>
}
2、使用三元运算符

css文件

.box-show {
 display: block;
}

.box-hide {
 display: none;
}
render(){
 return <p className={ this.state.isShow ? 'box-show' : 'box-hide' }>hello world</p>
}
3、使用函数

绑定的数据对象也不必内联定义在模板里:可以定义一个函数,类似vue中的computed钩子函数

js文件

getIsError() {
 return this.state.isError ? 'box-color' : '';
}

render(){
 return <p className={ this.getIsError() }>hello world</p>
}

注:下面这种对象变量写法是不支持的,也不会报错,控制台className显示为[object object],无效。

const classObj = {
 'box-show': this.state.isShow,
 'box-color': this.state.isError
}

render(){
 return <p className={ classObj }>hello world</p>
}

一般在项目逻辑比较复杂的场景中使用函数绑定方法,使用过多会使得视图层和逻辑层交杂混乱,难以阅读和维护,建议使用逻辑运算符和三元运算符方法动态绑定Class。

数组语法

React-JSX语法不支持className数组语法,尝试样例:

css文件

.box-hide {
 display: none;
}

.box-color {
 color:red;
}

js文件

this.state = {isShow: false}

render(){
 return <p className={ this.state.isShow ? 'box-color' : [ 'box-color', 'box-hide'] }>hello world</p>
}

控制台显示结果(无效,中间多了个逗号):

<p class="box-color, box-hide">hello world</p>

注:既然不支持数组语法,你只能将“box-color”中的样式复用到“box-hide”中,使用三元运算符来表示,这样无形中增加了css代码量。

绑定内联样式

对象语法

style对象语法比clasName对象更加直观,处理的功能更加简单,逻辑运算符方法和函数绑定方法可以参考className的实现,下面只介绍三元运算符的使用:

三元运算符

类似Vue的vue-if、微信小程序的wx-if指令,可以用style三元运算符动态实现

js文件

render(){
 return <p style={ this.state.isShow ? {display: 'inline-block'} : { display: 'none'} }>hello world</p>
}

数组语法

React-JSX语法也不支持style数组语法,尝试样例:

js文件

render(){
 return <p style={ this.state.isShow ? {color: 'red'} : [{color: 'red'}, {display: 'inline-block'}] }></p>
}

控制台显示结果(无效):

<p></p>

总之,为了高质量的完成项目需求,应付越来越复杂的业务场景,那种大量操作dom元素,随意命名一个样式变量,然后绑定到class和style的做法是不提倡的。

相关文章推荐:

html实现一个简单的注册页面(附代码)

link标签链接CSS和@import加载有什么区别?

热心网友 时间:2022-04-20 11:20

无论是动态还是静态,它的样式都可以被已经写好的css定义
你只需动态添加class,
$("p:first").addClass("intro");
也可以在你动态添加表格的时候,改一下代码,直接把class也设置了,让它和原来添加前一样。
当然啊,你可以动态改变style,
$(".er").css('color',‘red’);
但这个很麻烦,不适合大量改动

热心网友 时间:2022-04-20 12:38

你动态添加的tr ,td 的时候 ,顺便把class属性添加进去咯

然后你写css 设置tr,td的属性咯,css的style肯定要包括table以及里面的元素的。。。

<style type="text/css">
table tr {
    color:red
}
table td {
    color:blue
}
.tr_class{
    bgcolor:red
}
.td_class{
    bgcolor:blue
}
</style>

<script type="text/javascript">
window.onload=function(){
var tr = document.createElement("tr");
var td = document.createElement("td");
var table = document.getElementsByTagName('table')[0];

tr.setAttribute("class","tr_class");
td.setAttribute("class","td_class");

tr.appendChild(td);
table.append(tr);
};
</script>

<body>
<table><tr><td></td></tr></table>
</body>

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
空调加氟时要注意什么? 电脑安装了pr兼容性pr显示系统兼容性报告 带你了解——赫伯罗特 一千克面粉三十元一克面粉多少钱 大米2元500克面粉3元500克 2千克大米和和1500克面粉多少钱?_百度... ...面粉每千克多少元.大米25千克4.5元一千克面粉2 买8000克面粉需要32元,每千克面粉多少钱 500克面粉2元钱1千克面粉多少钱,怎么练式? 软棕和硬棕哪个好 amd rx6800m相当于nvidia什么水平? 求助:在js中动态添加表格行时,怎么动态改变每一行input的name值_百度... 如何用JS动态生成table标签写入到页面的DIV里 U盘里面的照片误删了怎么样才能恢复u盘里面被删除的照片?有知道吗? 我小学生,适合穿这种高帮鞋吗,上体育课时会不会有点累 匡威高帮的帆布鞋适合做运动吗?(如:跑步、爬山......) 我的控制器故障灯长闪不走怎么回事 广数980TB2驱动器报警Err23 广数伺服驱动报警Err-6是什么故障? MC3336控制器故障排查方法(1) 中国联通米粉卡是国内可以使用的吗? 广数Err15伺服电机报警 广数gs伺服驱动报警err-2怎么办。 我的控制器出现故障码,怎么解决啊,是什么问题啊? 广数GS驱动Err30报警什么意思? 中国联通米粉卡介绍? 卷帘门管状电机控制器故障有什么原因? 联通米粉卡流量怎么收费? 广数gr2000驱动器报警显示RL603什么意思? 广州数控伺服驱动器err25是什么故障码 - 信息提示 红杏枝头春意闹,前面一句是什么? plsql developer怎么导入数据 超柔软拉丝的南瓜夹心吐司有哪些好吃又操作简单的制作方法呢? oppo a五九是多少厘米的手机 多媒体教学一体机屏幕没了图标为什么 燃气调压撬型号有哪些 多媒体展台没有桌面图标咋办 燃气调压撬 是压力容器么,为什么? 多媒体上显示电脑桌面但是没有桌面图标 调压撬和调压箱的区别 艾博德教学一体机上图标不见了,怎么找回来 CNG加气站中高中压调压撬的作用? 调压室,调压柜,调压器有什么区别 加拿大移民有哪些条件 种类不同要求有区别 教学触摸一体机开机后不出现电脑桌面 加拿大投资移民有哪些项目? 因为调压器一般选用气开式,设置压撬时设置多少是正确的? 加拿大移民新要求~~~ 天然气调压撬为什么要安装电加热器配件 详解,移民加拿大需要的条件和移民加拿大的几种方式