JavaScript字符串故障

时间:2013-01-17 22:52:10

标签: javascript jquery string where-clause

我有一组复选框,选中后,应填充地图上的相关点。

这很有效:

var type_column = "FastFood";
var searchType = type_column + " IN (-1,";
if ( $("#divType1").is(':checked')) searchType += "1,";
if ( $("#divType2").is(':checked')) searchType += "2,";
if ( $("#divType3").is(':checked')) searchType += "3,";
if ( $("#divType4").is(':checked')) searchType += "4,";
whereClause += " AND " + searchType.slice(0, searchType.length - 1) + ")";

但这不是:

var type_column = "FastFood";
var searchType = type_column + " IN (-1,";
if ( $("#divType1").is(':checked')) searchType += "Arbys,";
if ( $("#divType2").is(':checked')) searchType += "Burgerking,";
if ( $("#divType3").is(':checked')) searchType += "Checkers,";
if ( $("#divType4").is(':checked')) searchType += "Dairyqueen,";
whereClause += " AND " + searchType.slice(0, searchType.length - 1) + ")";

将“Arbys”更改为“a”(依此类推)也不起作用,因此不是字符数。我也尝试在不包含逗号的字符串周围添加一组单引号。 (遗憾的是,仅仅使用这些数字不是其他无关原因的选择。)

3 个答案:

答案 0 :(得分:0)

您可能希望使用substring代替sliceslice用于数组,不用于字符串。

答案 1 :(得分:0)

根本没有,你的解决方案非常糟糕。您应该在客户端构建查询。除此之外,以下代码可能是更好的解决方案:

var type_column = "FastFood";
var whereClause = [];
if ( $("#divType1").is(':checked')) whereClause.push("Arbys");
if ( $("#divType2").is(':checked')) whereClause.push("Burgerking");
if ( $("#divType3").is(':checked')) whereClause.push("Checkers");
if ( $("#divType4").is(':checked')) whereClause.push("Dairyqueen");

whereClause += " AND " + type_column + " IN ('" + whereClause.join('\',\'') + "')";

答案 2 :(得分:0)

您可能希望将搜索字符串添加到数组中。这样你就不必担心像“Arbys”这样的字符串,最后用逗号然后剥去最后一个字符,而你可以使用逗号作为分隔符加入数组:

var type_column = "FastFood";
var searchType = type_column + " IN (-1,";
var search_array = [];
if ( $("#divType1").is(':checked')) searchArray.push("Arbys");
if ( $("#divType2").is(':checked')) searchArray.push("Burgerking");
if ( $("#divType3").is(':checked')) searchArray.push("Checkers");
if ( $("#divType4").is(':checked')) searchArray.push("Dairyqueen");
whereClause += " AND " + searchType + searchArray.join(',') + ")";