Without html or any correlating names, this is going to be a little bit generic. I will just start with your set of conditional statements.
<option value="">Choose operator</option>
<option value="=">Equals</option>
<option value="!=">Does not equal</option>
<option value="LIKE%%">Contains</option>
<option value="NOT LIKE%%">Does not contain</option>
<option value="<">Less then (<)</option>
<option value=">">Greater then (>)</option>
<option value="<=">Equals or less then (<=)</option>
<option value=">=">Equals or greater (>=)</option>
You are going to have to translate these to functions, which expect to be called with a left side and right side argument.
var conditionalFunctions = {
"=" : function(left,right){ return left === right },
"!=" : function(left,right){ return left !== right },
"LIKE%%" : function(left,right){ return left.indexOf(right) > -1 },
"NOT LIKE%%" : function(left,right){ return left.indexOf(right) == -1 },
"<" : function(left,right){ return left < right },
">" : function(left,right){ return left > right },
"<=" : function(left,right){ return left <= right },
">=" : function(left,right){ return left >= right }
};
And then call these from based on the selected value from your earlier options and use the arguments from whatever the current row values are.
var conditionalFunctions = {
"=" : function(left,right){ return left === right },
"!=" : function(left,right){ return left !== right },
"LIKE%%" : function(left,right){ return left.indexOf(right) > -1 },
"NOT LIKE%%" : function(left,right){ return left.indexOf(right) == -1 },
"<" : function(left,right){ return left < right },
">" : function(left,right){ return left > right },
"<=" : function(left,right){ return left <= right },
">=" : function(left,right){ return left >= right }
};
var oper = document.querySelector("#operator"),
rows = document.querySelectorAll(".row");
document.querySelector("#compare").onclick = function(){
var func = conditionalFunctions[oper.value];
for(var i = 0; i < rows.length; i++){
var row = rows[i],
left = row.querySelector(".left").innerText,
right = row.querySelector(".right").innerText;
row.querySelector(".op").innerText = oper.value;
row.querySelector(".result").innerText = func(left,right);
}
};
.row span { margin : 5px; }
.result { color: red; }
<select id="operator">
<option value="">Choose operator</option>
<option value="=">Equals</option>
<option value="!=">Does not equal</option>
<option value="LIKE%%">Contains</option>
<option value="NOT LIKE%%">Does not contain</option>
<option value="<">Less then (<)</option>
<option value=">">Greater then (>)</option>
<option value="<=">Equals or less then (<=)</option>
<option value=">=">Equals or greater (>=)</option>
</select>
<button type="button" id="compare">Compare</button>
<div class="row">
<span class="left">1</span>
<span class="op"></span>
<span class="right">2</span>
<span class="result"></span>
</div>
<div class="row">
<span class="left">2</span>
<span class="op"></span>
<span class="right">2</span>
<span class="result"></span>
</div>
<div class="row">
<span class="left">"hello"</span>
<span class="op"></span>
<span class="right">"h"</span>
<span class="result"></span>
</div>
eval()to do this.trueorfalseand don't have to perform actioneval('12 > 11')yields a boolean, true. I've always read that it's dangerous to use eval() in user input tough.