javascript - jQuery 中未捕获的 RangeError : Maximum call stack size exceeded when using . map 函数

标签 javascript jquery html

我在控制台上收到此错误:

Uncaught RangeError: Maximum call stack size exceeded

这是我的 jQuery 片段:

$(document).on("change","select.task_activity", function(){

  selected_activity = $("select.task_activity :selected").map(function(){ return this.value });
  //selected_activity = $("select.task_activity").val();
  new_artifact_select = $("select.new_artifact");

  /* Loads artifacts select when one or more activities are selected */
  $.post("/tasks/activity_artifacts",{
    activity_id: selected_activity
  },function(data, status){
    if (data){
      options = "";
      if (data.length > 0){
        for (i=0; i<data.length; i++){
          options += '<option value="'+data[i]['name']+'">'+data[i]['name']+'</option>';
        }
      }else{
        options += '<option>This activity has no artifacts</option>';
      }
    }else{
      options = '<option>Error</option>';
    }
    new_artifact_select.html(options);
  },"json");

});

捕获更改事件时会触发错误。

这里是一段 HTML:

<select class="task_activity" name="task1">
  <option value="">Select</option>
  <option value="35">.........</option>
  (...)
</select>
<select class="task_activity" name="task2">
  <option value="">Select</option>
  <option value="36">.........</option>
  (...)
</select>

我需要将所选项目 ID 放入数组中。映射在 on.("change") 范围之外工作,但浏览器似乎无法接受该范围内的更多功能。

有哪些替代方案?

最佳答案

它没有显示如何使用selected_activity,但请注意它是一个 jQuery 对象,而不是数组

问题是您可能试图将其传递给 $.post

的数据

要返回实际数组,您需要使用get()

var selected_activity = $("select.task_activity :selected").map(function(){ 
   return this.value 
}).get();

关于javascript - jQuery 中未捕获的 RangeError : Maximum call stack size exceeded when using . map 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41864154/

相关文章:

JAVASCRIPT/BOOTSTRAP-如何根据第一次选择的选项自动选择另一个选择的选项?

html - 使网站适合屏幕尺寸

javascript - mediaelementjs ie9 全屏事件

无法识别 JavaScript (WebStorm) 全局变量

javascript - 互斥图像

html - 不在特定 div 元素内的 p 标签的否定规则

javascript - 是否有更简单的方法来引用事件的源元素?

javascript - 输入范围类型在 IE 中无法正常工作

jquery - CSS jQuery 冲突

javascript - 使用 jquery 将日期格式更改为 ISO 8601