jQuery里奇葩的“toLowerCase”错误——保留字nodeName、nodeValue和nodeType

今天写页面遇到了一个奇怪的问题,只要点一个下拉框,js就报toLowerCase方法错误。然而我根本就没有用到这个toLowerCase方法,于是百思不得其解。

折腾了一整天之后才发现真正的原因,原来是因为这个下拉框的name叫nodeName,而nodeName是jQuery的保留字!jQuery也是真的奇葩,居然报了一个完全不相关的错误,让人根本无从查错。

搜索了一番之后,发现原来不仅是nodeName,nodeValue和nodeType也是jQuery的保留字,因而大家在设计数据库的时候,尽量把字段名避开这三个保留字,以避免写前端页面时出现问题。

实现某字段分类自增的SQL插入语句

需求如下:表中有一字段type,值为0、1、2、3;另一字段node_id,需要根据type字段的值分类自增。例如现在插入8条数据,type字段的值分别为0、1、1、1、0、2、3、2,则新增时node_id字段对应的值为000001、100001、100002、100003、000002、200001、300001、200002。

插入的SQL语句如下:

INSERT INTO dm_busi_type (node_id, type)
SELECT CONCAT(#type, LPAD(count(1) + 1, 5, 0)), #type
FROM dm_busi_type WHERE type = #type

#type为MyBatis传入的参数。
CONCAT(a, b)函数的作用为拼接a、b两字符串。
LPAD(a, length, b)函数的作用为在左侧将字符串a使用字符b填充成为length位。例如LPAD(233, 5, 0),结果为00233。