LESS不解析javascript交互的变量

LESS不解析javascript交互的变量,less,Less,我无法正确解析变量,然后将其传递给javascript @bp1 : "lorem"; @bp2 : "ipsum"; @bp3 : "foo"; @bp4 : "bar"; @bp5 : "baz"; @bp6 : "ham"; @bpN: 6; .loopingClass (@index) when (@index > 0) { @val: ~'@{bp@{index}}'; @value: ~'"@{val}".toUpperCase()'; @media scree

我无法正确解析变量,然后将其传递给javascript

@bp1 : "lorem";
@bp2 : "ipsum";
@bp3 : "foo";
@bp4 : "bar";
@bp5 : "baz";
@bp6 : "ham";

@bpN: 6;

.loopingClass (@index) when (@index > 0) {
  @val: ~'@{bp@{index}}';
  @value: ~'"@{val}".toUpperCase()';
  @media screen and (min-width: @value) {
    body { font-family: ~'"@{bp@{index}}"'; }
  }
  .loopingClass(@index - 1);
}
.loopingClass (0) {}
.loopingClass (@bpN);
以下代码将导致:

@media screen and (min-width: "ham".toUpperCase()) {
  body {
    font-family: "ham";
  }
}
@media screen and (min-width: "baz".toUpperCase()) {
  body {
    font-family: "baz";
  }
}
@media screen and (min-width: "bar".toUpperCase()) {
  body {
    font-family: "bar";
  }
}
@media screen and (min-width: "foo".toUpperCase()) {
  body {
    font-family: "foo";
  }
}
@media screen and (min-width: "ipsum".toUpperCase()) {
  body {
    font-family: "ipsum";
  }
}
@media screen and (min-width: "lorem".toUpperCase()) {
  body {
    font-family: "lorem";
  }
}

我试图动态设置变量,然后用javascript与之交互。我错过了什么?用更少的代码就可以做到这一点吗?

内联javascript评估的正确语法是使用反勾号。因此,通过其他次要修复,您的代码将变成:

@bp1 : "lorem";
@bp2 : "ipsum";
@bp3 : "foo";
@bp4 : "bar";
@bp5 : "baz";
@bp6 : "ham";

@bpN: 6;

.loopingClass (@index) when (@index > 0) {
  @val_: 'bp@{index}';
  @val: @@val_;
  @value: ~`@{val}.toUpperCase()`;
  @media screen and (min-width: @value) {
    body { font-family: @val; }
  }
  .loopingClass(@index - 1);
}
.loopingClass (0) {}
.loopingClass (@bpN);
并引用过度使用删除和进一步优化(小于1.4.0和更高版本):


内联javascript计算的正确语法是使用反勾号。因此,通过其他次要修复,您的代码将变成:

@bp1 : "lorem";
@bp2 : "ipsum";
@bp3 : "foo";
@bp4 : "bar";
@bp5 : "baz";
@bp6 : "ham";

@bpN: 6;

.loopingClass (@index) when (@index > 0) {
  @val_: 'bp@{index}';
  @val: @@val_;
  @value: ~`@{val}.toUpperCase()`;
  @media screen and (min-width: @value) {
    body { font-family: @val; }
  }
  .loopingClass(@index - 1);
}
.loopingClass (0) {}
.loopingClass (@bpN);
并引用过度使用删除和进一步优化(小于1.4.0和更高版本):


内联javascript计算的正确语法是使用反勾号。因此,通过其他次要修复,您的代码将变成:

@bp1 : "lorem";
@bp2 : "ipsum";
@bp3 : "foo";
@bp4 : "bar";
@bp5 : "baz";
@bp6 : "ham";

@bpN: 6;

.loopingClass (@index) when (@index > 0) {
  @val_: 'bp@{index}';
  @val: @@val_;
  @value: ~`@{val}.toUpperCase()`;
  @media screen and (min-width: @value) {
    body { font-family: @val; }
  }
  .loopingClass(@index - 1);
}
.loopingClass (0) {}
.loopingClass (@bpN);
并引用过度使用删除和进一步优化(小于1.4.0和更高版本):


内联javascript计算的正确语法是使用反勾号。因此,通过其他次要修复,您的代码将变成:

@bp1 : "lorem";
@bp2 : "ipsum";
@bp3 : "foo";
@bp4 : "bar";
@bp5 : "baz";
@bp6 : "ham";

@bpN: 6;

.loopingClass (@index) when (@index > 0) {
  @val_: 'bp@{index}';
  @val: @@val_;
  @value: ~`@{val}.toUpperCase()`;
  @media screen and (min-width: @value) {
    body { font-family: @val; }
  }
  .loopingClass(@index - 1);
}
.loopingClass (0) {}
.loopingClass (@bpN);
并引用过度使用删除和进一步优化(小于1.4.0和更高版本):


这是可行的,但是@uppercase变量用引号括起来了。有没有办法避免这种情况,或者我需要将输出保存到另一个变量,然后进行.replace(“,”)?啊,要删除引号,你也可以使用带反勾号的转义…(嗯,我想我没有注意到这是你在原始示例中的意图)。我已经用它更新了我的答案。这是可行的,但是@uppercase变量被括在引号中。有没有办法避免这种情况,或者我需要将输出保存到另一个变量,然后。替换(“,”)?啊,要删除引号,也可以使用带反勾的转义。。(嗯,我想我确实错过了你在原始示例中的意图)。我已经用它更新了我的答案。这是可行的,但是@uppercase变量被用引号括起来了。有没有办法避免这种情况,或者我需要将输出保存到另一个变量,然后进行.replace(“,”)?啊,要删除引号,你也可以使用带反勾号的转义…(嗯,我想我没有注意到这是你在原始示例中的意图)。我已经用它更新了我的答案。这是可行的,但是@uppercase变量被括在引号中。有没有办法避免这种情况,或者我需要将输出保存到另一个变量,然后。替换(“,”)?啊,要删除引号,也可以使用带反勾的转义。。(嗯,我想我确实错过了你在原始示例中的意图)。我已经更新了我的答案。