维护项目时,遇到jquery对textarea进行append追加操作,竟然没效果
先上图,别人写的代码,没毛病啊
这里对id为telephoneList的textarea元素先清空,后append数据,打断点看了,boxIdString有值啊,JS也执行了,但是页面咋没值呢?
于是Google 百度 全方面查找,解决方法:找到最开始对id为telephoneList的textarea操作了,看是怎么操作的
找到回显数据操作的方法,如下图
哦哦,原来如此,页面回显需要赋值时用的是jquery的val方法赋值的,后面再去用append进行追加肯定不行呀
所以这里需更改为$("#telephoneList").append(telephoneList);
理论上大功告成,实际又遇到了神奇的bug:页面不显示数据,按F12看textarea标签里有数据,这就神奇了
在仔细寻找我的值跑哪去了,发现在一个循环里,不小心把id为telephoneList的textarea给赋了空值!
解决方法:不要对即将要操作的元素提前赋值
以上为事情经过和处理方法,实际还可以都使用jquery的val方法来进行操作(使用了val就不要在代码中使用append),理论也是可以的!
append无效 解决方案总结:
第一步:
检查选择器是否使用正确,如 $("#id")少写一个#号,dom都拿不到如何来进行下一步?
第二步:
检查你最开始对textarea是如何操作的!
如果最开始用append来赋值,那么后续,清空操作用 $("#id").empty(),赋值追加操作用append,不能用 $("#id").val(“xxx”)来赋值!
如果最开始用的是 $("#id").val(“xxx”)来赋值,那么后续,清空操作用 $("#id").val(""),赋值操作用 $("#id").val(“xxx”),不能用append来赋值!
意思就是要统一操作,要么都对textarea的内嵌html进行操作,要么都对value进行操作
第三步:
仔细检查你的代码(尤其是循环操作),是否对你要操作的textarea赋过值