2013-10-04 56 views
1

我收到以下java脚本错误(间歇性) ”return” statement outside of functionjQuery代码中的间歇性错误

以下是在我的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

我不认为你可以从匿名回调函数返回值 –

+3

它看起来很好 - 没有什么明显的跳出来。当你得到错误时,它是否告诉你它在哪一行? – Archer

回答

0

感谢所有的答案..

当我删除另一个脚本时出现错误 - href="javascript:return void(0);"。我想这是问题

从folllowing:

<a href="javascript:return void(0);" id="MoveSelectedItems" class="k-button"> 
    <img src="~/Images/move.png" height="18" width="18" /> 
    Move 
    </a> 
+0

参考:http://stackoverflow.com/questions/4657233/jquery-and-ie-not-playing-nice – Lijo

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

这不是一个回答你的问题,因为这个问题是在别的地方根据您的问题,但不管出于什么目的你写的代码给定的代码(二函数),这可以在这一个函数内完成,还有其他方法,但这足够了,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使用相同功能的三个版本,但一个功能(更少的代码)的一些例子。

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价值的回归,使之恢复为假;同时,在$ .map内,它将其分配给外部变量selectedElements。

也许这会帮助或引导你在正确的方向。我有点玄乎这个代码:

selectedElements = getCode($(el).text()); 

也许你可以通过做SR5建议推法:

$.each($(parameterControl + " option:selected"), function (el) { 
    selectedElements.push(getCode($(el).text())); 
}); 

我想你想创建一个新的阵列出来呢?我希望我有更多与这里工作..

如果给予好评我的答案,并用$。每次使用SR5的推送方法,请给予好评SR5以及:-P