gpt4 book ai didi

javascript - Coffeescript 的 JS 函数,以 jQuery .map 和 Selectors 作为参数

转载 作者:行者123 更新时间:2023-12-01 01:54:02 25 4
gpt4 key购买 nike

我正在将一些 JS 代码重构为 CoffeeScript,但遇到了函数问题。

这是有效的 JS:

$(".comformt_QA").change(function(){
var array = $(".comformt_QA").map(function() {
return $(this).val();
}).toArray();

$("[name='comfort_qualitative_assessment.global_comfort_index']").val(
calc_qualitative_assessment_array(array)
).change();
});

我的目标是使用这个代码片段作为函数,并且能够调用:

class_to_calc_qualitative_assessment_array(".comformt_QA", "[name='comfort_qualitative_assessment.global_comfort_index']");

这是 CoffeeScript :

@class_to_calc_qualitative_assessment_array = (class_param, target) ->
array = []
$(class_param).change ->
array = $(class_param).map( ->
$(this).val()
)
$(target).val(calc_qualitative_assessment_array(array)).change()

数组始终为空...想法?

最佳答案

如果将咖啡代码编译为 Javascript,结果将是:

this.class_to_calc_qualitative_assessment_array = function(class_param, target) {
var array;
array = [];
$(class_param).change(function() {
return array = $(class_param).map(function() {
return $(this).val();
});
});
return $(target).val(calc_qualitative_assessment_array(array)).change();
};

Coffeescript 将 @ 转译为 JS 中的 this 关键字。此外,您的函数中没有返回值 - 这会导致 CoffeeScript 返回函数的最后分配值。

也许这将是一种可行的方法:

class_to_calc_qualitative_assessment_array = (class_param, target) ->
array = []
$(class_param).change ->
array = $(class_param).map( ->
$(@).val()
)
return
$(target).val(calc_qualitative_assessment_array(array)).change()
return

转换后看起来像这样:

var class_to_calc_qualitative_assessment_array;

class_to_calc_qualitative_assessment_array = function(class_param, target) {
var array;
array = [];
$(class_param).change(function() {
array = $(class_param).map(function() {
return $(this).val();
});
});
$(target).val(calc_qualitative_assessment_array(array)).change();
};

关于javascript - Coffeescript 的 JS 函数,以 jQuery .map 和 Selectors 作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29844713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com