JQuery 不能使用 innerHTML 与代替方式

本文讨论了在JQuery中遇到的使用innerHTML的问题及其替代方法。当尝试更新DOM元素时,发现JQuery的html()方法无法直接替代innerHTML。文章介绍了两种解决方案:一是使用JQuery的html()方法,特别是对于类选择器的情况;二是针对秒数后多余的".0"问题,提出了在控制器中或jsp中修改的策略,通过字符串替换来修正日期格式。

其实这里纪录的都是工作上同事编写时出现的问题及思考,因为我现在负责的模块暂时不涉及日期。

前后端数据传输问题

这一方面是我的薄弱项,以后会慢慢加强。一次任务中发现了两个问题:

  1. 异步加载使用了ResponseBody将对象转为json,对象中的Date对象也随之变成了时间戳
  2. 数据库传来的日期中,秒数后面有个.0,在页面上十分扎眼。

第一个问题在 上一篇博客:使用JavaScript将时间戳转为日期 已经解决了一半,之所以是一半是因为如标题所示,JQuery 不能使用 innerHTML 这个问题困扰了我许久,百度之后才找到了原因并解决。

第二个问题有两种解决方式,分别是在控制器层解决或在jsp文件中解决。

1. JQuery 的 html()

替代方法就是将原本

document.getElementById("id").InnerHTML = "填充代码";

替换成

$("#id").html("填充代码");
//写到这里时忽然想起,这个以前是学过的。。

JQuery 的html()方法替代了innerHTML,并且更方便的是:如果是找到多个对象的选择器(如类选择器),html()方法默认选择第一个对象进行编辑。
相对的还有text()替代text,(表单元素中) val() 替代 value

2. 秒数后面多了个”.0”

打印从数据库(MySQL)返回的数据:1995-02-10 00:08:12.0,发现本来就是带.0的。谜底就解开了,并不是数据库返回的Date对象有什么特别之处,只是在设计实体类时,将日期元素设置为String类型了,于是查询数据库时返回了个带.0的字符串,String也一并接收了。

在控制器中修改

这是最省事的方式了,只要使用replace(".0",""),将这个小尾巴去掉并返回数据就好。

jsp中修改

这个方法就比较多了,可以使用new Date(${date}) 接收后使用 toLocaleString() 方法将对象中的时间取出就好(Date对象转年月日时分秒格式在上一篇也有提到)。只不过这么做会有两个麻烦的地方:
1. 新建对象只能在js代码块中完成,之后就需要上面,使用html()了。
2. toLocaleString()方法返回的字符串,年月日之间的分隔符是 / ,与数据库中取出的以 - 为分割符的格式不符

第二个问题的结局方式是,使用replace()方法对返回的字符串进行字符串替换

replace(/\//g,'-')

替换之后就能正常显示了

参考:
innerHTML JQuery:innerHtml在jQuery中使用无效果 by 小刀不是死宅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值