有人可以解释这个JavaScript代码

时间:2014-01-07 11:54:18

标签: javascript

这是一个放大,缩小功能。

<script>
function resizeText(multiplier) {
  if (document.body.style.fontSize == "") {
    document.body.style.fontSize = "1.0em";
  }
  document.body.style.fontSize = parseFloat(document.body.style.fontSize) + (multiplier * 0.2) + "em";
}
</script>

我认为它说,默认字体大小,然后将其增加1.0,然后再乘以0.2。 缩小部分在哪里?

6 个答案:

答案 0 :(得分:2)

这是一个“放大镜”功能,您可以传递一个数字来增加当前文档的实际document.body.style.fontSize

它存在:

  

font-size CSS属性指定字体的大小 -   特别是字体所需的字形高度。设置   反过来,字体大小可能会改变其他项目的大小,因为它是   用于计算em和ex长度单位的值。

演示:http://jsfiddle.net/IrvinDominin/QytU3/

答案 1 :(得分:1)

传递给函数resizeText(multiplier)的值将决定它是缩小还是放大。

例如:
1.如果乘数值是位置(或大于零),则比放大倍数 2.如果乘数值为负(或小于零),则缩小。

在您的代码中,如果您的当前文档定义了字体大小,那么它将使用该值,否则它将设置为默认值1.0em

如果乘数值为正,则此代码(multiplier * 0.2)会给出正结果并添加到您当前的字体大小 如果乘数值为负,则此代码(multiplier * 0.2)会给出否定结果,并从当前字体大小中减去一些值。

答案 2 :(得分:1)

采用参数“乘数”

如果当前字体大小为空/空,则设置为“1.0em”

将大小设置为[当前大小的浮点值,去掉“em”] +参数乘以0.2并将“em”附加到末尾。

如果未设置当前大小且参数为5,则字体将变为“2.0em” 如果当前大小为“2.0em”且参数为-1,则字体将变为“1.8em”

答案 3 :(得分:0)

您可以将乘数传递给函数,函数可以根据它进行缩小或缩小。

答案 4 :(得分:0)

你在这个函数中传递乘数resizetext(乘数)这里乘数是函数的一个参数。

在第二行,你检查一个条件

例如:

  1. 如果您的乘数值是位置(或大于零),那么它将放大。
  2. 如果您的乘数值为负(或小于零),则缩小比例。
  3. document.body.style.fontSize = parseFloat(document.body.style.fontSize)+(乘数* 0.2)+“em”;

    并且在这一行中,首先你要在float中解析字体大小,然后将乘数参数乘以0.2em,然后为document.body.style.fontSize赋值。

答案 5 :(得分:0)

如果您要更改字体大小,则需要知道字体大小。

不幸的是,有时我们有空字符串表示的默认值。但由于我们知道默认值可以表示为1.0em,因此很容易处理:

if (document.body.style.fontSize == "") {
  document.body.style.fontSize = "1.0em";
}

如果我们有一个空字符串,我们在这里使用1.0em,因为这意味着同样的事情,但给我们一个我们可以使用的数字。

现在我们需要得到这个数字:

parseFloat(document.body.style.fontSize)

请注意,这不一定是1.0。如果我们开始使用空字符串,那么它会,但如果已经存在值,则可能是16px0.5in或其他任何内容。

现在我们需要更改该号码,以便更改文档的字体大小:

+ (multiplier * 0.2)

然后我们将数字改回数字和单位:

+ "em"

所以,例如如果我们使用5进行了调用且尚未设置任何值,则结果为1.0 + (5 * 0.2) = 1.0 + 1.0 = 2.0。如果我们再用-3调用,结果将是2.0 + (+3 * 0.2) = 2.0 + -0.6 = 1.4依此类推。

代码有一个小问题,假设“em”结束了字体大小。如果这是影响该值的唯一代码片段(可能是这样),那就没问题,但是如果你必须与可能设置它的其他代码交互,你需要检查单元并重新应用它,以便例如16px被加倍会导致32px而不是32em,依此类推。

相关问题