将字符串转换为jQuery fadeOut的正确格式

问题描述

我需要格式化字符串以将其作为jQuery (-4,2) 的持续时间传递,该字符串是我在JavaScript中访问的CSS变量。

jQuery的fadeOut接受数字或关键字字符串,我想将CSS var格式化为数字并将其转换为毫秒,以便可以用作fadeOut的持续时间值

CSS变量用于fadeOut计时,因此CSS作者可以以几种不同的格式设置此值,例如:

transition

我要在LESS样式表中设置CSS变量

300ms
0.9s
.4s

并在JS中访问它(简体)

:root {
    --transition__duration: @transition__duration; // 300ms
}

var transitionVarName = '--transition__duration',transitionVar = getComputedStyle(docRoot).getPropertyValue(transitionVarName),transitionDuration = transitionVar ? transitionVar : 300,fadeSpeed = clean(transitionDuration); element.fadeOut(fadeSpeed) clean: function (str) { var num = str; return parseFloat(num); } 适用于parseFloat(num)之类的值,这给了我300ms,但是当我传递诸如300之类的东西时,它返回.3s,我明白这是期望的3的行为,但我不确定要获得所需格式的数学运算,例如

parseFloat

编辑:

解决方案

300ms // 300
0.9s // 900
.4s // 400

解决方法

这里有些东西在飞奔中,(它也在这里晚了……也许我没有涵盖全部)

let arr = ["300ms","0.9s",".4s","3s"]

arr.forEach(time => {

  time = "0" + time;
  //console.log(time)
  if (time.includes(".") || time.endsWith('s') && !time.endsWith('ms')) {
    time = time.replaceAll('s','');
    time = time * 1000;
  }
  time = parseFloat(time)
  console.log(time)
});

所以你应该有我的想法:

clean: function(str) {
  var num = str;

  num = "0" + num;

  if (num.includes(".") || num.endsWith('s') && !num.endsWith('ms')) {
    num = num.replaceAll('s','');
    num = num * 1000;
  }

  return parseFloat(num);
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...