var Cen = 6;//定义菱形中部为第几行(起始值为0)

         //for循环输出菱形
document.write("<button onclick='xh()'>点我for循环</button>");//在HTML里输出一个按钮,点击后执行输出菱形的操作
document.write("<p id='xunhuan'></p>");//在HTML里输出一个段落p来容纳菱形
function xh() {
var kong = "";
var x = 0;//控制margin的数值增加减少的值
for (i = 0 ; i <= Cen * 2 ; i++) {
if (i == 0 || i == Cen * 2) {
kong += "<p style='margin-left:" + (Cen * 20 + 5) + "px'>8</p>";
};
if (i != 0 && i <= Cen) {
x += 20
kong += "<p style='margin-left:" + (Cen * 20 - x) + "px'> <span style='margin-right:" + (2 * x) + "px'>8</span> <span>8</span> </p>";
};
console.log(x);
if (i != Cen * 2 && i > Cen) {
x -= 20
kong += "<p style='margin-left:" + (Cen * 20 - x) + "px'> <span style='margin-right:" + (2 * x) + "px'>8</span> <span>8</span> </p>";
};
};
document.getElementById("xunhuan").innerHTML = kong; }; //while循环输出菱形
document.write("<button onclick='xh2()'>点我while循环</button>");
document.write("<p id='xunhuan2'></p>");
function xh2() {
var kong = "";
var i = 0, x = 0;
while (i <= Cen * 2) {
if (i == 0 || i == Cen * 2) {
kong += "<p style='margin-left:" +( Cen * 20 + 5) + "px'>8</p>";
};
if (i != 0 && i <= Cen) {
x += 20;
kong += "<p style='margin-left:" + (Cen * 20 - x) + "px'> <span style='margin-right:" + (2 * x) + "px'>8</span> <span>8</span> </p>";
};
if (i != Cen * 2 && i > Cen) {
x -= 20;
kong += "<p style='margin-left:" + (Cen * 20 - x) + "px'> <span style='margin-right:" + (2 * x) + "px'>8</span> <span>8</span> </p>";
};
i++
};
document.getElementById("xunhuan2").innerHTML = kong; };

逻辑分析:

1、我们用html建立一个中部处于第三行时的小的菱形,来分析它的构成和规律

2. (1)输出段落,菱形中部=3,段落p=5,因此我们首先用for||while循环输出5个段落;

(2)第一个p和最后一个p为菱形的顶点,仅需要在<p>里输入一个8即可,因此首先我们做一个判断,让其先输入两个顶点;

(3)中部为菱形的两条边,其中菱形为对称图图形,因此我们发现其和分为两个部分需递增和递减其margin-left和两条边相隔的margin-right就可以实现了,因此我们做了两个判断;

(4)最后我们来发现这个菱形的中部其实就是他对称分隔的两个判断的值,而最后一个顶点就是他输出的总的段落值,因此我们来根据这个中部值去定义每一个判断值

(5)最后我们来分析他的margin-left和两条边相隔的margin-right的规律,发现除了一头一尾一样,上面和下面出现规律递增递减,因此我们这里定义一个x=0
,通过其递增递减来实现菱形边距离的变化。

综上所述,步骤就几个:
html里输入一个菱形,分析他的结构,找出规律
判断两个顶点的位置和
判断中部和中部以上的边的位置
判断中部以上的边的位置
最后根据这个死的菱形去分析如何变成中部可以活动的菱形,分析其中不值与其的关联

JavaScript学习笔记-循环输出菱形,并可菱形自定义大小的更多相关文章

  1. Java程序猿JavaScript学习笔记(2——复制和继承财产)

    计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...

  2. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  3. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  4. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  5. JavaScript学习笔记[0]

    JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...

  6. JavaScript:学习笔记(9)——Promise对象

    JavaScript:学习笔记(9)——Promise对象 引入Promise Primose是异步编程的一种解决方案,比传统的解决方案回调函数和事件更加合理和强大.如下面为基于回调函数的Ajax操作 ...

  7. JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别

    JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...

  8. JavaScript:学习笔记(5)——箭头函数=>以及实践

    JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...

  9. Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

随机推荐

  1. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)

    CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...

  2. python基础(五)缩进和选择

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例. ...

  3. sqlite3 shell的使用

    sqlite的安装 1. 首先是下载sqlite,可以该页面下载:http://www.sqlite.org/download.html 当前的最新版本为:sqlite-shell-win32-x86 ...

  4. 使用elasticsearch的关键技术点

    前言 最近有一个项目用到了搜索引擎,这里记录下使用过程中遇到的一些问题和解决方案. 0.准备工作 1)安装elasticsearch 2)安装Marvel 3)安装head tips:在es的配置文件 ...

  5. [转]ng-grid

    本文转自:http://angular-ui.github.io/ui-grid/ Getting Started Steps for getting started (example on righ ...

  6. 经典DOS游戏皇帝攻略(曾经的回忆)

    最完美攻略>>>>> -------------------------------------------------------------------------- ...

  7. SQL连接查询

    连接查询:通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join   on 2.union 在关系数据库 ...

  8. [No00003D]操作系统Operating Systems信号量的代码实现Coding Semaphore &死锁处理Deadlock

    操作系统Operating Systems信号量的代码实现Coding Semaphore &死锁处理Deadlock 可以操刀了—从纸上到实际 从Linux 0.11 那里学点东西… 读磁盘 ...

  9. 如何调试shell脚本

    今天看shell脚本攻略的时候,看见这个方法,感觉还是不错的 #!/bin/bash function DEBUG(){ [[ $_DEBUG == 'on' ]] && $@ || ...

  10. iOS:CYLTabBarController【低耦合集成TabBarController】

    导航 与其他自定义TabBarController的区别 集成后的效果 项目结构 使用CYLTabBarController 第一步:使用CocoaPods导入CYLTabBarController ...