例如以下HTML
01010004一次性注射器10ml
要转换成 {"ID":"01010004","Name":"一次性注射器","Specification":"10ml"} 进行存储
有什么插件或者思路
补充如下:
HTML结构:
且或且
沈阳
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
重庆
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
西安
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
广州
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
深圳
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
长春
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
上海
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
属于
不属于
包含
不包含
为空
非空
开头是
结尾是
JS方法如下:(采用jQuery)
function getFilterTableData(tableID) {
var operatorMap = {
1: 'AND',
2: 'OR'
};
var conditionAndRangeMap = {
condition: function($obj) {
return $obj.children('select').val()
},
pickRange: function($obj) {
return {
val: $obj.children('select').val(),
mode: 'select'
}
},
editRange: function($obj) {
return {
val: $obj.children('input').val(),
mode: 'input'
}
},
nullRange: function($obj) {
return
}
};
var c = '.tableStyle-2-container',
h = '.tableStyle-2-operator',
b = '.tableStyle-2-content',
l = '.tableStyle-2-content-list',
li = '.tableStyle-2-content-list-unitRow',
label = '.unitRow-label';
var result = {};
var $start = $(tableID).children();
var looper = function($c, data) {
var $unitH = $c.children(h), //操作符
$unitB = $c.children(b), //内容
$unitB_children = $unitB.children(); //内容子节点
//如果有操作符
if($unitH.length) {
data.type = operatorMap[$unitH.attr('operator')];
}
//存储子节点信息
data.children = [];
//如果内容有子节点
if($unitB_children.length) {
var $unitL = $unitB.children(l); //内容 - 列表
var $unitC = $unitB.children(c); //内容 - 容器
if($unitL.length) {
var children = [];
var $lis = $unitL.children(li);
for(var i = 0, length = $lis.length; i < length; i++) {
var $label = $lis.eq(i).children(label);
var $condition = $label.next();
var $range = $condition.next();
var unitRowData = $.extend({
col: $label.text()
}, {
rel: conditionAndRangeMap[$condition.attr('class').split('-')[1]]($condition),
}, conditionAndRangeMap[$range.attr('class').split('-')[1]]($range));
children.push(unitRowData);
}
data.children.push({
children: children
});
}
if($unitC.length) {
data.children.unshift({});
looper($unitC, data.children[0]);
}
}
}
looper($start, result);
return result
}
var resultData = getFilterTableData('#businessData-filter-table');
console.log(JSON.stringify(resultData));