javascript - 无法调用函数来检索 "value"参数并替换字符串中的字符

标签 javascript jquery

有一些代码是另一位开发人员重复的。 我想把它放在一个函数中然后调用它,但现在我有点困惑。

这是我的代码:

if(true) {
    $(this).attr('id', function (i, val) {
       return val.replace('Less', 'More');
    }).attr('data-bactmln', function (i, val) {
       return val.replace('Less', 'More')
    });
} else {
    $(this).attr('id', function (i, val) {
       return val.replace('More', 'Less');
    }).attr('data-bactmln', function (i, val) {
       return val.replace('More', 'Less')
    });
}

我想做这样的事情:

var toggleTealiumId = function(p1, p2) {
    return val.replace(p1, p2);
};

if(true) {
   $(this).attr('id', toggleTealiumId('More', 'Less'));
} else {
   $(this).attr('data-bactmln', toggleTealiumId('Less', 'More'));
}

那个valvalue字符串的第一行代码,但现在我得到 undefined .

那我怎么才能停止val来自undefined并以正确的方式去做?

有什么建议吗?

最佳答案

你需要这样写:

function toggleTealiumId(p1, p2) {
  return function(i, val) {
    return val.replace(p1, p2);
  }
}

调用 toggleTealiumId('More', 'Less') 将返回一个函数,其中 p1p2 绑定(bind)'More''Less'(查看 How do JavaScript closures work? 了解更多详情),此函数可以作为参数传递给 属性

关于javascript - 无法调用函数来检索 "value"参数并替换字符串中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49157657/

相关文章:

javascript - 如何在同一页面的 PHP 代码中使用 AJAX 回调中的值?

javascript - 使用 Foundation Abide 验证文件类型

JavaScript 排列

javascript - 为什么在我的 JS 嵌套数组中得到 "arr[i] is undefined"?

javascript - 从输入值字符串中查找并删除文本

javascript - 将日期转换为 ISOString 后删除时间

javascript - 如何使用jquery获取数据属性的值

javascript - 如何将 'hidden div' 元素导出为 PDF 而不在 UI 上显示它

javascript - 两个按钮,用 Jquery 做两件不同的事情

javascript - JQuery:将 div 附加为 var 类