我收到以下java脚本错误(间歇性地)
”return” statement outside of function
。
以下是我的jQuery代码中返回的函数。我想知道这个代码模式有什么问题?在一个函数中调用另一个函数是一个问题吗?有什么想法吗?
CODE
function getSelectedParameters(parameterControl) {
var selectedElements = $.map($(parameterControl + " option:selected"), function (el, i) {
var code = getCode($(el).text());
return code;
});
var parameter = selectedElements.join(",");
if (isAnyParameterSelected == 0) {
if (parameter.length > 0) {
isAnyParameterSelected = 1;
}
}
return parameter;
}
function getCode(selectedValue) {
var firstIndex = selectedValue.lastIndexOf(":");
var code = selectedValue.substring(0, firstIndex);
return code;
}
答案 0 :(得分:1)
Try this:
function getSelectedParameters(parameterControl) {
var selectedElements = [];
$.each($(parameterControl + " option:selected"), function (el) {
selectedElements.push(getCode($(el).text()));
});
if (isAnyParameterSelected == 0 && selectedElements.length > 0) {
isAnyParameterSelected = 1;
}
return selectedElements.join(",");
}
答案 1 :(得分:1)
这不是你问题的答案,因为根据问题中的给定代码,问题出现在其他地方,但无论出于何种目的,你编写的代码(两个函数)都可以在这一个函数中完成,还有其他方法,但这足够了,IMO。
function getSelected(el)
{
var opt = $(el).find('option:selected'), l = opt.length, i = 0, arr = [], t;
for(;i < l; i++) {
t = $(opts[i]).text(), arr[i] = t.substring(0, t.lastIndexOf(":"));
}
isAnyParameterSelected = (isAnyParameterSelected == 0 && opt) ? 1 : 0;
return arr.join(',');
}
确保变量isAnyParameterSelected
在函数执行范围内可用。您可以调用以下函数:
getSelected('.sel') // A select with class 'sel'
使用三个相同功能但一个功能(代码少)的版本检查this fiddle。
答案 2 :(得分:1)
我真的没有看到你的语法有什么问题,但这背后总会有某种奇怪的潜在问题。也许这种方法会起作用,因为我正在从你的内部匿名函数中删除一个返回值,因为这可能是你的return语句的冲突。一年前我遇到过类似的问题,下面是你可以使用的解决方法。
function getSelectedParameters(parameterControl) {
var selectedElements = new Array();
$.map($(parameterControl + " option:selected"), function (el, i) {
selectedElements = getCode($(el).text());
return false; //edit this to make it false
});
var parameter = selectedElements.join(",");
if (isAnyParameterSelected == 0) {
if (parameter.length > 0) {
isAnyParameterSelected = 1;
}
}
return parameter;
}
function getCode(selectedValue) {
var firstIndex = selectedValue.lastIndexOf(":");
var code = selectedValue.substring(0, firstIndex);
return code;
}
我正在做的是从$ .map值中删除返回值,使其返回false;同时,在$ .map中,它分配给外部变量selectedElements。
这可能有助于或指导您朝着正确的方向前进。我对这段代码有点不确定:
selectedElements = getCode($(el).text());
也许你可以做SR5建议的推送方法:
$.each($(parameterControl + " option:selected"), function (el) {
selectedElements.push(getCode($(el).text()));
});
我认为你正试图用这个来创建一个新阵列?我希望我能在这里工作更多......
如果你支持我的答案,并使用$ .each的SR5推送方法,请upvote SR5 :-p
答案 3 :(得分:0)
感谢所有答案......
当我删除另一个脚本时,错误不会发生 - href="javascript:return void(0);"
。我想这就是问题
从下面开始:
<a href="javascript:return void(0);" id="MoveSelectedItems" class="k-button">
<img src="~/Images/move.png" height="18" width="18" />
Move
</a>