「JavaScript 开发技巧」日常开发积累分享 2

67 阅读2分钟

🙏废话不多说系列,直接开整🙏

1. if/else 逻辑判断语句书写逻辑分支处理:
const functionA = () => {/* do something */}
const functionB = () => {/* do something */}
const functionC = () => {/* do something */}
const actions = new Map([
  ['guest_1', () => {functionA}],
  ['guest_2', () => {functionC}],
  ['guest_3', () => {functionA}],
  ['default', () => {functionC}]
])
/**
 * 按钮点击事件
 * @param {string} identity 身份标识:guest客态 master主态
 * @param {number} status 活动状态:1.开票中,2.开票失败,3.开票成功,4.商品售罄,5.有库存未开团
 */
const onButtonClick = (identity, status) =>  {
  let action  = actions.get('${identity}_${status}') || actions.get('default')
  action.call(this)
}
2.  JS 判断字符串出现最多的字符,并统计次数
/**
 * 判断一个字符串中出现次数最多的字符,并统计这个字符出现的次数
 * @param {string} str 
 */
function countStr(str) {
  var obj = [];
  for (var i = 0, len = str.length, k; i < len; i++) {
      k = str.charAt(i);
      if (obj[k]) {
          obj[k]++;
      } else {
          obj[k] = 1;
      }
  }
  var m = 0, i = null;
  for (var k in obj) {
      if (obj[k] > m) {
          m = obj[k];
          i = k;
      }
  }
  return i + ":" + m;
}
3. 判断当前文件是否存在指定的ID
// 第一种写法:JavaScript
function exist(id) {
	var flag = document.getElementById(id);
    if (flag) { 
        return true;
    } else {
    	return false;
    }
}
// 第二种写法:jQuery
function exist_jq(id) {
	var flag = $("#"+ id +"").attr(id);
    if(flag){return true;} else {return false;}
}
4. 按下 enter 直接搜索
<script type="text/javascript">
    $(function () {
        // enter 直接搜索
        document.onkeydown = function (event) {
            var e = event || window.event ||arguments.callee.caller.arguments[0];
            if (e && e.keyCode === 13) {
                //执行的函数
				// $('#searchForm').submit();
            }
        };
    });
</script>

HTML代码如下:

<form id="searchForm" method="post" action="list.ht">……</form>
5. 页面文本溢出效果

① HTML 代码

<div class=”wrapperOne”>
this is a text , it is very long long long and long
</div>

② CSS 源码

height: 50px;
border: 1px solid pink;
width: 200px;		  /* 1.给需要做溢出处理的文本元素设置width或者max-width */
overflow:hidden;    /* 2.超出部分省略 overflow:hidden  */
text-overflow:ellipsis; /* 3.文本溢出处理方式 text-overflow: ellipsis | clip | 自定义字符 如:“_” “.” */
white-space:nowrap; /* 4.设置文本不换行 white-space: nowrap */

③ 效果展示

image.png

6. 下拉选择器 select 得到选中值(JavaScript)
<select onchange="selectChange(this)">
    <option value="500">500米</option>
    <option value="1000">1000米</option>
    <option value="3000">3000米</option>
    <option value="5000">5000米</option>
</select>

<script>
    //方法一
    function selectChange(that) {
        console.log(that.value);
    }

    //方法二
    let selectDom = document.querySelector('select'); //获取下拉框元素
    selectDom.onchange = function() {
        let index = this.options.selectedIndex;
        let value = this.options[index].value;
        console.log(value);
    }

    // 直接获取指定select 选中值
    var selectedVal = $('#mySelect option:selected').val();

    //箭头函数的写法
    //selectDom.onchange = () => {
    //    console.log(selectDom.value);
    //};
</script>
7. JSP 前端文字竖列居中显示

① HTML 代码

<center><div id="wordId">安徽建工小贷有限公司</div></center>

② CSS 样式

#wordId {
	width: 50px; 
	font-size: 50px; 
	word-wrap: break-word; 
}

③ 效果展示

image.png

8. JavaScript 金额校验(保留两位小数)

① JavaScript 部分:

// 函数1:通过ID定位(jQuery写法)
function checkMoneyLegalById(id) {
	var moneyAfterBg = $("#"+id).val();
	moneyAfterBg = moneyAfterBg.replace(/[^\d.]/g,""); //清除"数字"和"."以外的字符
	moneyAfterBg = moneyAfterBg.replace(/^\./g,""); //验证第一个字符是数字而不是字符
	moneyAfterBg = moneyAfterBg.replace(/\.{2,}/g,"."); //只保留第一个.清除多余的
	moneyAfterBg = moneyAfterBg.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
	moneyAfterBg = moneyAfterBg.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //只能输入两个小数
	$("#"+id).val(moneyAfterBg);
}

// 函数2:对输入金额进行校验
function clearNoNum(obj){
obj.value = obj.value.replace(/[^\d.]/g,""); //清除"数字"和"."以外的字符
obj.value = obj.value.replace(/^\./g,""); //验证第一个字符是数字而不是字符          
obj.value = obj.value.replace(/\.{2,}/g,"."); //只保留第一个.清除多余的       
obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //只能输入两个小数
} 

② HTML 部分:

<label style="width:100px; margin-left: 115px;">缴费金额:</label>
<input type="text" id=”needPayMoney” name="payment" 
       value="${(merchants.payment)!}"  οnkeyup="clearNoNum(this)"/>

🙏至此,非常感谢阅读🙏