如何使用函数减少值

2024-04-17

嘿,实际上我制作了一个 html 页面,其中有两个部分,当我单击第一部分时,数字会增加,当我单击第二部分时,第二部分中的数字会增加。我使用了 javascript。现在我在每个页面的底部做了一个按钮。我希望当我单击该按钮时,数字应该减少我尝试了很多方法,但每次都失败 当您运行片段时,单击“开始”按钮,您将看到减号按钮,当我单击该分数时,我希望分数应该减少

     angular.module('scoreKeeper', []).
controller('score', ['$scope', function ($scope) {

  $scope.gameInfo = {
    gameStarted: false,
    servesSinceSwitch: 0,
    scoreSwitchMode: 0,
    numberOfPlayers: 2 };


  $scope.team1 = {
    name: "Team 1",
    score: 0,
    serving: false };

  $scope.team2 = {
    name: "Team 2",
    score: 0,
    serving: false };


  $scope.player1 = {
    name: "P1",
    serving: true };


  $scope.player2 = {
    name: "P2",
    serving: true };


  $scope.player3 = {
    name: null,
    serving: false };


  $scope.player4 = {
    name: null,
    serving: false };


  $scope.startGame = function () {$scope.gameInfo.gameStarted = true;};

  $scope.players = function (n) {
    $scope.gameInfo.numberOfPlayers = n;
    if (n == 2) {
      $scope.player3.name = null;
      $scope.player4.name = null;
    } else {
      $scope.player3.name = "P3";
      //$scope.player3.serving = true;
      $scope.player4.name = "P4";
    //$scope.player4.serving = true;

    }

  };
  $scope.addPoint = function (i) {
    // Start the game, give the Serving class to the person who won the rally
    if (!$scope.team1.serving && !$scope.team2.serving) {
      $scope['team' + i].serving = true;
      $scope.footer.message = "Game on!";
    } else {

      // Increment the player's score, how many serves since the last switch, and the highest current score
      $scope['team' + i].score++;
      $scope.gameInfo.servesSinceSwitch++;
      $scope.gameInfo.highestScore = Math.max($scope.team1.score, $scope.team2.score);

      // Echo who's in the lead or if it's tied
      if ($scope.team1.score > $scope.team2.score) {
        if ($scope.player3.name) {
          $scope.gameInfo.teamWithHighScore = $scope.team1.name;
        } else {
          $scope.gameInfo.teamWithHighScore = $scope.player1.name;
        }
        $scope.footer.message = $scope.gameInfo.teamWithHighScore + " is in the lead";
      } else if ($scope.team1.score < $scope.team2.score) {
        if ($scope.player3.name) {
          $scope.gameInfo.teamWithHighScore = $scope.team2.name;
        } else {
          $scope.gameInfo.teamWithHighScore = $scope.player2.name;
        }
        $scope.footer.message = $scope.gameInfo.teamWithHighScore + " is in the lead";
      } else if ($scope.team1.score == $scope.team2.score) {
        $scope.footer.message = "Game is tied";
      }

      if ($scope.team1.score == 10 && $scope.team2.score == 10) {
        $scope.gameInfo.scoreSwitchMode = 1;
      }

      // Figure out if serves are switching by 5
      if ($scope.gameInfo.servesSinceSwitch == 5 && $scope.gameInfo.scoreSwitchMode == 0) {
        $(".team").toggleClass("team__isServing");
        $scope.team1.serving = !$scope.team1.serving;
        $scope.team2.serving = !$scope.team2.serving;

        if ($scope.gameInfo.numberOfPlayers == 4) {
          if ($scope.team1.serving) {
            $scope.player1.serving = !$scope.player1.serving;
            $scope.player3.serving = !$scope.player3.serving;
          } else {
            $scope.player2.serving = !$scope.player2.serving;
            $scope.player4.serving = !$scope.player4.serving;
          }
        }
        $scope.gameInfo.servesSinceSwitch = 0;

        // Or by 1
      } else if ($scope.gameInfo.scoreSwitchMode == 1) {
        $(".team").toggleClass("team__isServing");
        $scope.team1.serving = !$scope.team1.serving;
        $scope.team2.serving = !$scope.team2.serving;
        if ($scope.gameInfo.numberOfPlayers == 4) {
          if ($scope.team1.serving) {
            $scope.player1.serving = !$scope.player1.serving;
            $scope.player3.serving = !$scope.player3.serving;
          } else {
            $scope.player2.serving = !$scope.player2.serving;
            $scope.player4.serving = !$scope.player4.serving;
          }
        }
      }

      // Figure out if the game is over and who won
      if (Math.abs($scope.team1.score - $scope.team2.score) >= 2 && $scope.gameInfo.highestScore >= 21) {
        $(".scoreBoard").addClass("dimmed");
        $scope.footer.message = "Game over! " + $scope.gameInfo.teamWithHighScore + " wins!";
      }
    }
  };

  $scope.footer = {
    message: "Rally for serve" };

}]);
 
    * {
  box-sizing: border-box;
}

body {
  padding: 0;
  margin: 0;
  height: 100vh;
  width: 100vw;
  font-family: sans-serif;
  background: #ECF0C9;
}

.score {
  display: flex;
  justify-content: center;
  align-items: center;
  flex: 1;
  position: fixed;
  height: 90vh;
  width: 100%;
  z-index: 999;
  color: #ECF0C9;
  font-size: 20vmax;
  pointer-events: none;
}
.score > span {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
}

.screen {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

.scoreBoard {
  flex: 1;
  display: flex;
  justify-content: space-between;
}

.team {
  color: #ECF0C9;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.team.team-1 {
  margin-right: 4px;
}
.team.team-1 .player-right {
  background: #45B29D;
  margin-top: 2px;
}
.team.team-1 .player-left {
  background: #DF5A49;
}
.team.team-1 .serving__isServing {
  order: 1;
}
.team.team-1 .serving__isNotServing {
  order: -1;
}
.team.team-2 {
  margin-left: 4px;
}
.team.team-2 .player-left {
  background: #E27A3F;
  margin-top: 2px;
}
.team.team-2 .player-right {
  background: #EFC94C;
}
.team.team-2 .serving__isServing {
  order: -1;
}
.team.team-2 .serving__isNotServing {
  order: 1;
}
.team.team__isServing .serving__isServing {
  color: #ECF0C9;
  animation: serving 1s infinite reverse;
}

.player {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
}
.player input {
  width: 90%;
  height: 10vh;
  background: #334D5C;
  color: #ECF0C9;
  border: none;
  text-align: center;
  font-size: 8vh;
}
.player.player-alone {
  order: 3;
}

header, input.teamName {
  display: flex;
  justify-content: center;
  align-items: center;
  background: #334D5C;
  color: #6b7e7d;
  max-height: 10vh;
  font-size: 8vh;
  flex: 1;
  border: none;
  text-align: center;
}

@keyframes serving {
  0% {
    opacity: 1;
  }
  100% {
    opacity: .5;
  }
}
footer {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 10vh;
  font-size: 5vmin;
  color: #334D5C;
}
footer.menu {
  display: flex;
  justify-content: space-between;
  padding: 0 2vw;
}
footer.menu div {
  display: flex;
  flex: 1;
  justify-content: space-around;
}
footer.menu button {
  background: #334D5C;
  color: #ECF0C9;
  border: none;
  height: 9vh;
  font-size: 7vh;
  padding: 0 2vw;
}
footer.menu button.notSelected {
  color: #909f93;
}

.dimmed {
  opacity: .5;
  pointer-events: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body ng-app="scoreKeeper" ng-controller="score">
  
  <div class="screen screen-start" ng-if="!gameInfo.gameStarted">
    <div class="scoreBoard">
      
      <div class="team team-1">
        <input type="text" class="teamName" ng-model="team1.name" ng-if="gameInfo.numberOfPlayers == 4"></input>
        <div class="player player-left">
          <input type="text" ng-model="player1.name"></input>
        </div>
        <div class="player player-right player-serveSpot" ng-if="gameInfo.numberOfPlayers == 4">
          <input type="text" ng-model="player3.name"></input>
        </div>
      </div>
      
      <div class="team team-2">
        <input type="text" class="teamName" ng-model="team2.name" ng-if="gameInfo.numberOfPlayers == 4"></input>
        <div class="player player-right">
          <input type="text" ng-model="player2.name"></input>
        </div>
        <div class="player player-left" ng-if="gameInfo.numberOfPlayers == 4">
          <input type="text" ng-model="player4.name"></input>
        </div>
      </div>
      
    </div>
    <footer class="menu">
      <div>
        <button ng-click="players(2)" ng-class="{'notSelected':gameInfo.numberOfPlayers == 4}">2</button>
        <button ng-click="players(4)" ng-class="{'notSelected':gameInfo.numberOfPlayers == 2}">4</button>
      </div>
      <div>
        <button ng-click="startGame()">START</button>
      </div>
    </footer>
  </div>
  
  <div class="score" ng-if="team1.serving || team2.serving">
    <span>{{team1.score}}</span>
    <span>{{team2.score}}</span>
  </div>
  
  <div class="screen screen-game" ng-if="gameInfo.gameStarted">
    <div class="scoreBoard">
      
      <div class="team team-1" ng-click="addPoint(1)" ng-class="{'team__isServing':team1.serving}">
        <header ng-class="{'serving__isServing':player1.serving, 'serving__isNotServing':!player1.serving}">{{player1.name}}</header>
        <div class="player player-left" ng-class="{'player-alone':!player3.name}" style="position:relative">       
            <h3  type="button"  id="subt1" style="position: absolute;bottom: 0;left: 10px;font-size: 50px;color: white;font-weight:bolder;    margin: 0px !important;cursor: pointer;">-</h3></div>
        <div class="player player-right player-serveSpot" ng-if="player3.name"></div>
        <header ng-class="{'serving__isServing':player3.serving, 'serving__isNotServing':!player3.serving}" ng-if="player3.name">{{player3.name}}</header>
             </div>
      
      <div class="team team-2" ng-click="addPoint(2)" ng-class="{'team__isServing':team2.serving}">
        <header ng-class="{'serving__isServing':player2.serving, 'serving__isNotServing':!player2.serving}">{{player2.name}}</header>
        <div class="player player-right" ng-class="{'player-alone':!player3.name}"style="position:relative">   
            <h1  type="button"  id="subt2"style="position: absolute;bottom: 0;right: 10px;font-size: 50px;color: white;font-weight:bolder;    margin: 0px !important;cursor: pointer;">-</h1></div>
        <div class="player player-left" ng-if="player4.name"></div>
        <header ng-class="{'serving__isServing':player4.serving, 'serving__isNotServing':!player4.serving}" ng-if="player4.name">{{player4.name}}</header>
      </div>
      
    </div>
    <footer>{{footer.message}}</footer>
  </div>
</body>

您的按钮没有附加任何功能。 问题就在这里:

<div class="team team-1" ng-click="addPoint(1)" ....>
 <h3  type="button"  id="subt1" style="...">-</h3></div>    
</div>

ng-click="addPoint(-1)" 

你会得到类似的东西

 <h3  type="button" ng-click="addPoint(-1)"  id="subt1" style="...">-</h3></div>    

你需要添加negative当他们点击按钮时。

也改变<h3 type="button"只是<button></button> or <input type="submit">

更新: 问题就在这里!

<div class="team team-1" ng-click="addPoint(1)" ....>
 <h3  type="button"  id="subt1" style="...">-</h3></div>    
</div>

你有h3嵌套在 addPoints 元素内。 如果不单击 addPoint 元素,则无法单击 h3 元素。

因为 h3 是 addPoints 的子级。 你需要删除它
您仍然可以将其放置在同一位置,但是当它没有嵌套时。

 <h3  type="button" ng-click="addPoint(-1)"  id="subt1" style="...">-</h3>

然后添加适当的 JavaScript 逻辑。 我会将 addPoint() 更改为 addPoint(element_number,points_to_add)
所以你做 addPoint(1, -1)

实际上我会更改所有代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用函数减少值 的相关文章

  • 表单验证后 isValid 保持 false

    我有一个自定义验证函数 但即使它没有返回错误 表单仍然无效 我将以下属性传递给 Formik validate import files gt return import files values length 0 import files
  • 将 javascript 变量作为 onsubmit href 链接传递到表单/输入字段

    id 喜欢有一个输入框 用户可以在其中输入搜索词 该搜索词可能会传递给一个 javascript 函数 然后该函数将一些 url 段与搜索词组合起来 创建一个完整的 url 到目前为止 它在没有表单的情况下工作正常 但我想向其中添加一个表单
  • 将数组传递给 include() javascript

    我试图找出一个字符串是否包含存储在数组中的多个字符串 includes 所以我尝试过 let string hello james console log string includes hello james 但它被返回为false 当我
  • angular.isdefine 有什么好处?

    有什么好处angular isdefined超过和超过foo undefined 我一时想不出有什么好处 在 Javascript 中以任何方式访问真正未定义的变量 除了 typeof 都会抛出错误 你只能使用Angular isDefin
  • Cloudflare Worker 缓存 API 出现问题

    我现在花了无数的时间尝试让缓存 API 来缓存一个简单的请求 我让它在中间工作过一次 但忘记向缓存键添加一些内容 现在它不再工作了 不用说 cache put 没有指定请求是否实际被缓存的返回值并不完全有帮助 我只能进行反复试验 有人可以给
  • 强制 Javascript 编码风格的工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要自动检查不同人编写的javascript源代码的风格 你知道有什么好的工具可以做到这一点吗 与 emacs 集成将是一个优势 先感谢
  • 如果我想让我的网站跨平台兼容和屏幕阅读器兼容,我应该避免使用 javascript 、 jquery 、 flash 、 ajax 、 silverlight 吗?

    如果我想让我的网站跨平台兼容 PC iPHONE 其他手机 PDA 和 Accessible 兼容屏幕阅读器 我是否应该避免使用 JavaScript jQuery flash Ajax Silverlight 我应该只使用 xhtml c
  • Vue Chart.js - 数据变化时图表不更新

    我正在使用 Vue js 和 Chart js 绘制一些图表 每次我调用该函数时generateChart 图表不会自动更新 当我在 Vue Devtools 中检查数据时 它们是正确的 但图表没有反映数据 但是 当我调整窗口大小时 图表确
  • 如何将对象传递给 onclick 事件[重复]

    这个问题在这里已经有答案了 可能的重复 Javascript 循环内的事件处理程序 需要闭包吗 https stackoverflow com questions 341723 event handlers inside a javascr
  • 针对较小屏幕的拆分表行

    我有一个固定宽度为 960px 有 5 列的表格 当我在移动设备中查看时 我想制作第 3 4 5 列 看起来就像在下一行 有什么方法可以让 CSS 打断一行 使其看起来像这样 但是 还保留原来的HTML代码吗 您可以使用 FlexBox f
  • 是否可以模拟 isTrusted=true

    我希望在调用 touchStart 事件时能够模拟 isTrusted true 是否有任何库或任何类型的解决方法可以实现这一点 以下是我以编程方式运行 touchStart 时的输出与实际调用 touchStart 时的输出 我正在使用移
  • 统计并限制上传的文件数量(HTML文件输入)

    我有那个基本的 众所周知的多文件上传表单 类似的事情
  • CSS 可见性动画不起作用

    我想在 CSS 可见性属性上制作基于关键帧的动画 我最初在 显示 上尝试过 但发现不支持 显示 上的动画 但支持 可见性 这个想法是让矩形的可见性不断切换 我不想使用 jquery 并且想在 CSS 中实现整个它 以下是我的代码 但它没有给
  • 使用node和multer将图像上传到heroku不起作用

    我正在尝试使用 Node 后端将图像文件上传到 Heroku 我可以使其工作 同样的过程在本地主机测试中工作得很好 但是在将我的项目部署到 Heroku 并测试它之后 过程和文件中出现错误不会上传 后端 let storage multer
  • 不透明的回复有哪些限制?

    不透明的回应 https fetch spec whatwg org concept filtered response opaque被定义为一部分获取API https fetch spec whatwg org 并表示向远程源发出请求的
  • ES6 - 有没有一种优雅的方法来导入所有命名导出而不是默认导出?

    我正在寻找一种优雅的方法来导入所有命名导出 而不必导入默认导出 在一个文件中 我导出许多命名常量以及默认值 myModule js const myDefault my default export const named1 named1
  • 如何禁用 AngularJS 中输入的修剪?

    我发现了一些奇怪的行为 默认情况下角度修剪模型值 快速谷歌搜索并不能帮助我解决这个问题 我发现了ng no trim指导性建议 ng trim等等 但没有任何作用 我在下面提供了一个代表这个问题的小片段 function Ctrl scop
  • 在工厂和控制器之间共享 http.get 数据

    我成功创建了一个获取 php 文件输出 JSON 的工厂 我的问题是如何从控制器内访问它 myApp angular module myApp myApp factory mainData http gt http get gethome
  • JS 中的展开/休息运算符如何工作? [复制]

    这个问题在这里已经有答案了 我正在努力完全理解扩展 休息运算符在 JS 中的工作原理 我已经阅读了 MDN 文档 但我仍然不完全清楚 我在下面提供了一个示例 我在其中使用了它并且它按预期工作 const users name Samir a
  • Javascript - 从 AWS s3 存储桶读取镶木地板数据(使用快速压缩)

    In nodeJS 我正在尝试读取镶木地板文件 压缩 snappy 但没有成功 I used https github com ironSource parquetjs https github com ironSource parquet

随机推荐

  • 处理kendo调度程序中的销毁事件

    我正在使用剑道调度程序 调度程序网格中添加了事件 当鼠标悬停在每个事件上时 右上角会出现一个小 x 即该事件的销毁事件 单击该事件时会显示一条警告消息 您确定要删除此事件吗 如果单击 是 它将继续并删除该事件 这是我的要求 正如您在上面看到
  • WSO2 身份服务器 - Oauth 2.0 - Java 签核示例

    我为 Oauth2 身份验证流程编写了一个基于 Java 的签核例程 令牌撤销 请参阅下面的代码实现 遵循手册中描述的 cURL 协议说明 here https docs wso2 com display IS500 OAuth Token
  • 下划线模板 - 更改标记标记

    开箱即用的下划线模板使用标记对于原始的 和用于 HTML 转义内容 我知道您可以使用以下方法更改标记 templateSettings interpolate g 但这与原始内容和转义内容有何关系 在我看来 你最终只能得到一种类型的标记 或
  • ScalaCheck 生成 BST

    我正在尝试使用 ScalaCheck 创建 BST 的 Gen 但是当我调用 sample 方法时 它给出了 java lang NullPointerException 我哪里错了 sealed trait Tree case class
  • 如何从

    我有一个严重的问题 我想从标签中提取内容 例如 div class main content div class sub content Sub content here div Main content here div 我期望的输出是
  • 机器人按键在 Linux 中不工作

    我多次使用 Robot 类 但在 Windows 中没有遇到任何问题 但这次我使用的是 Fedora 如果我尝试一下 keyPress KeyEvent VK WINDOWS 它不工作 如何在linux Fedora 中模拟按Windows
  • Ninject 通过城堡动态代理拦截具有非空构造函数的代理类

    我当前的大部分实现都基于此处提供的信息 Ninject 拦截任何具有特定属性的方法吗 https stackoverflow com questions 6386461 ninject intercept any method with c
  • x11 - 导入错误:没有名为“kivy.core.window.window_x11”的模块

    当我尝试在我的 kali linux 操作系统中使用 python 3 5 运行任何 kivy 程序时 然后我收到以下错误 程序 from kivy app import App from kivy lang import Builder
  • 为什么 Gradle 或 Maven 没有依赖版本锁定文件?

    最近 在阅读 NPM Yarn Paket Cargo 等包管理器时 我了解到依赖版本锁定文件的概念 我的理解是 它是一个列出所有直接和传递依赖项及其确切依赖项的文件 版本号 因此保证后续构建使用一组等效的依赖项 这似乎是一个理想的功能 因
  • 无需越狱 iPhone 即可访问 /var/mobile/Containers/Data/Application 中的文件

    程序在 iPhone 上的目录 var mobile Containers Data Application 中记录一些消息 有什么方法可以在不越狱 iPhone 的情况下访问此目录 如果没有 iPhone 上是否有任何目录可以让我在不越狱
  • MySQL 调试工具查询速度慢? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有哪些免费工具可以用来查找MySQL的慢查询 除了记录慢速查询之外 需要详细分析慢查询 谢谢 凯瑟尔 U
  • 多处理管理器出现 EOFError

    我有很多客户端通过 0MQ 连接到服务器 我有一个管理器队列 用于工作人员池与每台客户端计算机上的主进程进行通信 在一台拥有 250 个工作进程的客户端计算机上 我几乎立即看到一堆 EOFError 它们发生在执行 put 时 我预计大量的
  • 有没有办法在 Spark 中随机排列集合

    我需要用 2 2 10 9 行打乱文本文件 有没有办法将它加载到 Spark 中 然后并行地洗牌每个分区 对我来说 在分区范围内洗牌就足够了 然后将其溢出回文件 要仅在分区内进行洗牌 您可以执行以下操作 rdd mapPartitions
  • 这个校验和算法可以改进吗?

    我们有一个非常旧的 不受支持的程序 可以跨 SMB 共享复制文件 它有一个校验和算法来确定文件内容在复制之前是否已更改 该算法似乎很容易被愚弄 我们刚刚找到了一个示例 其中两个文件完全相同 除了单个 1 更改为 2 之外 返回相同的校验和
  • 无法使用 mailR 包通过 Outlook.com 发送电子邮件

    我想用 mailR 用于发送带有身份验证的电子邮件通知的包 这个包的支持者是 rJava 并使用 Java 设施 我注册了 Outlook com 帐户 这是代码 library mailR email lt send mail from
  • 读取 3 个字节作为整数

    如何读取 3 个字节的整数 struct module 是否提供类似的东西 我可以读取 3 个字节并添加一个额外的 x00 然后将其解释为 4 字节整数 但这似乎没有必要 struct 模块没有 3 字节整数的选项 所以我认为附加 x00
  • 从 oauth 身份验证获取电子邮件 (Microsoft)

    如何从微软帐户获取电子邮件 我正在执行以下操作 public ActionResult ExternalLoginCallback string returnUrl AuthenticationResult result OAuthWebS
  • 在 R 中使用 geom_rect 进行时间序列着色

    我正在尝试对时间序列图的某个部分进行着色 有点像经济衰退阴影 类似于底部的图表 这篇关于 Excel 中的经济衰退阴影的文章 https research stlouisfed org tips 200511 recession bars
  • Java ArrayList 和 LinkedList - 在末尾添加元素实现细节

    我对为什么 arraylist 比链表更快的理解是 使用 arraylist 基本上只需要一个操作 更新末尾数组元素的引用 而使用链表你必须做更多的事情 例如创建一个新节点 更新 2 个引用 遍历链表并更新最后一个节点以指向新节点等 但是我
  • 如何使用函数减少值

    嘿 实际上我制作了一个 html 页面 其中有两个部分 当我单击第一部分时 数字会增加 当我单击第二部分时 第二部分中的数字会增加 我使用了 javascript 现在我在每个页面的底部做了一个按钮 我希望当我单击该按钮时 数字应该减少我尝