当前位置: 首页 > 知识库问答 >
问题:

当文本达到最小/最大大小时,使用JavaScript禁用HTML按钮

羊舌迪
2023-03-14

抱歉,如果标题解释得不好,我有这个页面,有两个按钮和一个文本块,一个用于增加文本大小,另一个用于减少文本大小。我想在文本达到最大或最小大小时禁用每个按钮。例如:

点击“放大”按钮,如果文本达到最大大小,则禁用该按钮。点击“较小”按钮,如果文本达到最小大小,则禁用该按钮。

我尝试在onhtml函数中使用下一个if语句:

    if(currentSize== "66.6667pt"){bigger.disabled=true;}

其中66.6667pt是文本在保持固定前达到的大小。另一种情况下,最小尺寸为6.75磅。

我不知道是否有更好的方法来验证文本是否达到其最小/最大大小,但这种方法不起作用,“较大”按钮在文本第二次达到66.6667pt时被禁用,“较小”按钮从未被禁用。

这是整个html

    <!DOCTYPE html>
    <html>
<head lang="es">
  <title>Find Bug Script</title>
  <meta charset="utf-8"> 
  <style>
  </style>
  <script>
     window.onload=function(){ 

          var smaller = document.getElementById("smaller");
          var hello = document.getElementById("hello");
          if(!hello.style.fontSize){hello.style.fontSize="12pt";} 
          var factor=0.75;
          bigger.onclick=function(){

             var currentSize=hello.style.fontSize;
            if(currentSize== "66.6667pt"){bigger.disabled=true;}
             var csz = parseInt(currentSize.replace("24pt", ""));
             if(csz > 60) return;
             csz/=factor;
             hello.style.fontSize= csz+"pt";


          }
          smaller.onclick=function(){

             if(hello.style.fontSize== "6.75pt"){smaller.disabled=true;}
             var currentSize=hello.style.fontSize;
             var csz = parseInt(currentSize.replace("24pt", ""));
             if(csz <= 6) return;
             csz*=factor;
             hello.style.fontSize= csz+"pt";
          }

     };
  </script>
</head>
<body>
    <input type=button value="Bigger" id="bigger"/>
    <input type=button value="Smaller" id="smaller" />
    <h1 id="hello" maxlength="5">¡Hello!</h1>
</body>

这是我的第一个HTML/JS类,所以,让我们努力学好它。谢谢你抽出时间!

共有3个答案

徐唯
2023-03-14

我会:

if(parseInt(currentSize)> 66){bigger.disabled=true;}

如果至少我明白你的问题。

诸葛彦
2023-03-14

您的按钮没有被禁用,因为条件currentSize==“66.6667pt”从来都不是真的。看起来您要处理两次禁用状态,因为除了禁用按钮,如果大小小于60,您的函数还会提前返回:

if(csz > 60) return;

因此,在点击几次之后,你的尺寸最终会达到65.333pt,这可以防止它在后续的点击中变大,但它永远不会满足禁用按钮的条件。

您认为最大允许大小有两种不同的东西:一个地方是60,另一个地方是66.6667。试着定义一次,然后在两个地方都使用它:

var maxSize=60;
bigger.onclick=function(){
   var currentSize=hello.style.fontSize;
   if(parseFloat(currentSize)> maxSize){bigger.disabled=true;}
   var csz = parseInt(currentSize.replace("24pt", ""));
   if(csz > maxSize) return;
   csz/=factor;
   hello.style.fontSize= csz+"pt";
}

这是一个工作样本。试着为自己做同样的事情。一旦他们再次缩小文本,你也可以尝试重新启用按钮。

夏侯楷
2023-03-14

直接在fontsize属性上执行数学有点混乱。

与其每次都试着读出文本大小,我只需要在我的javascript代码中保留一个“步进器”变量,它可以跟踪你所处的字体大小“步进”。然后我会把步进器中的存储值插入某个公式中,得出最终的字体大小。要约束大小,您可以确保“步骤”高于或低于某些值。

比如:

var factor = 0.75;
var step   = 0;

bigger.onclick = function() {
    step++;
    step = Math.min(step, 4) // Step can never go above 4
    reloadText();
}

smaller.onclick = function() {
    step--;
    step = Math.max(step, -4) // Step can never go below -4
    reloadText();
}

function reloadText() {
    // 14 is the default size, in points.
    // If step is equal to zero, there will be no change in size.
    // If step is below zero, the font will be smaller.
    // If step is above zero, the font will be larger.
    var size = 14 + (step*factor); 
    hello.style.fontSize= size+"pt";

    if (step >= 4) {
        // Disable "bigger" button
    } else {
        // Enable "bigger" button
    }

    if (step <= -4) {
        // Disable "smaller" button
    } else {
        // Enable "smaller" button
    }
}
 类似资料:
  • 我将GLFW3.2与LWJGL和Java一起使用。 我想删除窗口上的最大化和最小化按钮,而窗口保持可调整大小,我找不到任何方法在glfw留档中做到这一点。 我见过这个解决方案,但它只适用于窗口,使用C,我正在寻找的解决方案需要跨平台。 是否有可能使用glfw实现这一点?或者我应该使用一个未装饰的glfw窗口并绘制自己的标题栏?

  • 问题内容: 上下文:我正在构建一个读取rss feed并在后台更新/检查feed的小站点。我有一个数组来存储要显示的数据,另一个数组来存储已显示的记录的ID。 问题:在事情变慢或变慢之前,数组可以在Javascript中容纳多少个项目。我没有对数组进行排序,但是正在使用jQuery的inArray函数进行比较。 该网站将保持运行状态,并进行更新,并且不太可能经常重启/刷新浏览器。 如果我想从数组中

  • 问题内容: 所以基本上我正在生成随机的10000个IP地址,我想存储在HashSet中找到的所有那些IP地址,但是根据我的计算,发现了大约6000个IP地址,但是在HashSet中仅存储了700个IP地址?HashSet在存储String方面是否有任何限制。任何建议将不胜感激。 问题答案: 就您而言,没有限制(限制是数组的最大大小,即2 ** 31)。 但是,仅存储 唯一 值,因此我的猜测是您仅生

  • 这听起来可能像是JavaFX ImageView设置的最大大小的重复,但它是不同的。 我想限制ImageView的最大大小。不幸的是,设置ImageView大小的唯一方法似乎是fitWidth和fitHeight,但是如果图像小于配合值,则会放大图像。 我尝试将fitWidth/fitHeight设置为0/0,并将ImageView包装到设置了maxWidth的窗格中-没有成功(图像以原始大小显示

  • 问题内容: 为什么会限制其大小? 我浏览了一些链接:http : //www.coderanch.com/t/540346/java/java/maximum-size-hold- String-buffer 。 是因为count成员变量是int吗? 假设我们有2 ^ 31-1个字符,并在其中追加了一些字符。Count成员变量将增加附加的字符数,如果Count变量已经达到最大值(2 ^ 31-1)

  • 本文向大家介绍JavaScript 查找最小或最大元素,包括了JavaScript 查找最小或最大元素的使用技巧和注意事项,需要的朋友参考一下 示例 如果您的数组或类似数组的对象是numeric,也就是说,如果它的所有元素都是数字,则可以使用Math.min.apply或作为第一个参数Math.max.apply传递null,而将数组作为第二个参数传递。 6 在ES6中,可以使用...运算符扩展数