jQuery基于ajax实现带动画效果无刷新柱状图投票代码

yizhihongxing

使用jQuery基于ajax实现带动画效果无刷新柱状图投票,需要以下步骤:

步骤1:编写HTML代码

首先,需要在HTML中创建一个div,将其作为投票结果的容器。然后,在该div中再创建若干个div,每个div表示投票选项,同时添加一个input元素,用于存储选项对应的投票数。

以下是一个示例HTML代码:

<div id="vote_result">
  <div class="option">
    <input type="hidden" name="option1" value="10">
    Option 1
  </div>
  <div class="option">
    <input type="hidden" name="option2" value="20">
    Option 2
  </div>
</div>

步骤2:编写jQuery代码

接下来,需要引入jQuery库和相关的CSS样式文件。然后,利用jQuery的ajax方法,实现无刷新更新投票结果的效果。

$(function() {
  $('.option').click(function() {
    var option = $(this).find('input');
    var voteCount = parseInt(option.val());
    option.val(voteCount + 1);
    updateResult($(this));
  });
});

function updateResult(option) {
  var optionName = option.find('input').attr('name');
  var optionValue = option.find('input').val();
  var maxBarWidth = $('#vote_result').width();
  var voteTotal = 0;
  $('.option input').each(function() {
    voteTotal += parseInt($(this).val());
  });
  $('.option').each(function() {
    var option = $(this).find('input');
    var voteCount = parseInt(option.val());
    var votePercent = voteCount / voteTotal;
    var barWidth = maxBarWidth * votePercent;
    $(this).find('.bar').animate({width: barWidth}, 'slow');
    $(this).find('.percent').text((votePercent * 100).toFixed(0) + '%');
  });

  $.ajax({
    url: 'vote.php',
    type: 'POST',
    data: {option_name: optionName, option_value: optionValue},
    success: function(data) {
      console.log(data);
    },
    error: function(xhr, status, error) {
      console.error(xhr);
      console.error(status);
      console.error(error);
    }
  });
}

以上代码的解释如下:

  • 第1行:使用jQuery的$(function(){...})方法,在DOM完全加载后执行相关代码;
  • 第2行:为每个选项绑定click事件,当用户点击某个选项时,会自动更新投票数并更新“投票结果”;
  • 第11~12行:提取当前选项的名称和投票数;
  • 第13行:计算当前投票百分比应该产生的图表宽度;
  • 第14行:获取当前所有选项的投票总数;
  • 第15~30行:根据当前的投票数和总数,计算每个选项应该占用的图表宽度和文字百分比,并利用jQuery的animate方法实现图表动画效果;
  • 第32~39行:发送一个ajax请求到后端,提交当前用户的投票结果,并在控制台打印出返回结果。

示例1:基本动画效果

为了演示该投票效果,可以创建一个简单的PHP后端程序,将用户的投票结果写入到一个votes.txt文件中。

vote.php:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $option_name = $_POST['option_name'];
  $option_value = $_POST['option_value'];

  file_put_contents('votes.txt', "$option_name=$option_value\n", FILE_APPEND);
  echo "投票成功!";
}

使用上面的HTML和jQuery代码配合该PHP文件,就可以实现一个具有基本投票动画效果的页面。

示例2:自定义CSS样式

要想让该投票页面更加美观,可以自定义一些CSS样式,并在HTML中引入相应的CSS文件。

以下是一个示例的CSS代码,可以创建一个style.css文件并写入以下内容:

#vote_result {
  width: 70%;
  margin: auto;
  font-size: 18px;
  color: #333;
}

.option {
  padding: 10px;
  margin-bottom: 5px;
  background-color: #EEE;
}

.bar {
  height: 20px;
  background-color: #2484C4;
}

.percent {
  float: right;
  margin-left: 10px;
  color: #AAA;
}

该CSS文件定义了投票结果容器、投票选项、柱状图和文字百分比的样式。可以在HTML代码中引入该CSS文件,以进一步美化投票页面。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>jQuery基于ajax实现带动画效果无刷新柱状图投票代码</title>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <div id="vote_result">
    <div class="option">
      <input type="hidden" name="option1" value="10">
      Option 1
      <div class="bar"></div>
      <div class="percent">0%</div>
    </div>
    <div class="option">
      <input type="hidden" name="option2" value="20">
      Option 2
      <div class="bar"></div>
      <div class="percent">0%</div>
    </div>
  </div>
  <script src="vote.js"></script>
</body>
</html>

以上是一个完整的jQuery基于ajax实现带动画效果无刷新柱状图投票的攻略。通过自定义HTML、jQuery和CSS代码的不同组合,可以实现各种各样的投票效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery基于ajax实现带动画效果无刷新柱状图投票代码 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 百度空间的popup效果分析第2/3页

    标题:百度空间的popup效果分析第2/3页 介绍:在百度空间中,当用户点击某个内容时,会弹出一个浮层,展示更多相关内容。这种浮层效果被称为popup效果。本文将详细分析百度空间的popup效果,并提供完整的攻略指南。 什么是popup效果? popup效果指的是浮层效果,常见于网页中。它的特点是悬浮在所点击的内容上方,通常用于实现以下功能: 弹出更多相关内…

    css 2023年6月10日
    00
  • css把容器级别(div…)标签固定在一个位置(在页面最右边)

    要把容器级别(如div)标签固定在一个位置(如页面最右边),可以使用CSS中的position属性以及相关的取值。 下面是实现这一效果的步骤: 在CSS中选中需要固定的容器级别标签,并设置其position属性为fixed。同时,可以设置right属性为零或其他具体值,以确定容器级别标签在页面最右边的位置。 .container { position: fi…

    css 2023年6月9日
    00
  • Python全栈之学习HTML

    Python全栈之学习HTML攻略 1. 前置知识 在开始学习HTML前,你需要掌握以下前置知识: 基本的计算机操作能力 基本的文本编辑器使用技能 了解网页和互联网的基本概念 了解HTML的基本语法和标记 如果你已经掌握了以上知识,那么可以开始下一步。 2. 学习HTML 2.1 HTML基础语法 HTML是一种标记语言,用于创建网页。HTML标记由尖括号括…

    css 2023年6月10日
    00
  • Bootstrap基本插件学习笔记之模态对话框(16)

    Bootstrap基本插件学习笔记之模态对话框(16) 什么是模态对话框? 模态对话框(Modal)是一个会阻止用户输入的对话框,通常用于展示用户必须操作或者必须知道的信息。当出现模态对话框时,用户必须先完成对话框中的操作才能继续其他操作。 Bootstrap的模态对话框 Bootstrap的模态对话框是一种轻量级的、模态的(即阻止用户进行其他操作)对话框,…

    css 2023年6月9日
    00
  • 详解css中background-clip属性的作用

    我为你讲解详解 CSS 中 background-clip 属性的作用。 什么是 background-clip 属性? background-clip 属性用于指定背景颜色或图片的绘制范围(裁剪区域),其值可以为 border-box、padding-box 或 content-box。 border-box:绘制的背景会延伸到边框的外侧。 padding…

    css 2023年6月9日
    00
  • Js实现无刷新删除内容

    下面我来详细讲解一下 “Js实现无刷新删除内容” 的完整攻略。 1. 背景知识 在学习完该攻略之前,需要先掌握以下内容: Ajax(Asynchronous JavaScript and XML),即异步的JavaScript与XML。通过Ajax可以在页面无需刷新的情况下,实现异步获取数据,并且局部更新网页内容。 jQuery的Ajax实现方法,可以参考官…

    css 2023年6月10日
    00
  • 奇妙的 CSS 属性 MASK详解

    CSS 属性 MASK 是一种非常有趣的属性,它可以让我们在元素上创建出各种奇妙的遮罩效果。本文将详细讲解 MASK 属性的使用方法和常见的遮罩效果,同时提供两个示例说明。 MASK 属性的使用方法 MASK 属性是 CSS3 中新增的属性,它可以让我们在元素上创建出各种奇妙的遮罩效果。MASK 属性有两个主要的属性值:mask-image 和 mask-t…

    css 2023年5月18日
    00
  • ajaxToolkit:ModalPopupExtender演示及实现代码

    请允许我详细讲解“ajaxToolkit:ModalPopupExtender演示及实现代码”的完整攻略。 什么是ModalPopupExtender? ModalPopupExtender 是 Ajax Control Toolkit 提供的一种扩展控件,可以实现弹出模态窗口的效果,且在模态窗口不同于常规窗口的背景模糊显示。这种扩展控件通常用于提示用户进行…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部