免费国产欧美国日产_少妇AV一区二区三区无码_蜜桃精品av无码喷奶水小说_jk18禁网站视频_精产国品一二三级产品区别_被夫の上司に犯波多野结衣_78m成人手机免费看_最爽最刺激18禁视频_偷偷色噜狠狠狠狠的777米奇

易優(yōu)GEO 重磅上線 ~ 一站式GEO優(yōu)化工具,讓豆包、文心一言、DeepSeek 在回答中主動(dòng)推薦你的品牌,搶占AI流量入口!  點(diǎn)擊查看

小程序模板網(wǎng)

在微信小程序中使用“隨機(jī)鍵盤”

發(fā)布時(shí)間:2018-05-08 10:55 所屬欄目:小程序開發(fā)教程

最近研究微信小程序,發(fā)現(xiàn)在手機(jī)上使用系統(tǒng)鍵盤非常不方便,一是按鍵太小,對(duì)于小學(xué)生來說,操作非常不方便;二是系統(tǒng)鍵盤反復(fù)切換影響界面布局。于是自己決定自己寫一個(gè)隨機(jī)的小鍵盤。

原理非常簡單:拿“口算練習(xí)”來說,總共只設(shè)置四個(gè)數(shù)字輸入鍵和一個(gè)“Del”鍵,隨機(jī)從0-9這10個(gè)數(shù)字隨機(jī)顯示四個(gè)數(shù)字就足夠了,當(dāng)然這四個(gè)數(shù)字必須包含答案所含的數(shù)字。

如下圖中界面所示:習(xí)題為“9+77=?”,答案為86,先提出8和6,再從剩下的01234579八個(gè)數(shù)字中隨機(jī)取兩個(gè)數(shù)字,之后和8、6總共四個(gè)數(shù)字再進(jìn)行隨機(jī)排序,最后分別顯示在四個(gè)數(shù)字鍵上,OK!

生成“隨機(jī)鍵盤”的代碼如下:

 

  1. MakeNumBtn: function () {
  2. function getRandomArrayElements(arr, count) {
  3. var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;
  4. while (i-- > min) {
  5. index = Math.floor((i + 1) * Math.random());
  6. temp = shuffled[index];
  7. shuffled[index] = shuffled[i];
  8. shuffled[i] = temp;
  9. }
  10. return shuffled.slice(min);
  11. }
  12.  
  13. if (op === "+") {
  14. ans = A + B;
  15. } else if (op === "-") {
  16. ans = A - B;
  17. } else if (op === "×") {
  18. ans = A * B;
  19. } else if (op === "÷") {
  20. ans = A / B;
  21. }
  22. var nums = '0123456789'
  23. var arrAns = [];
  24.  
  25. var temp = ans.toString().split('');
  26. for (var i = 0; i < temp.length; i++) {
  27. if (arrAns.indexOf(temp[i]) == -1) {
  28. arrAns.push(temp[i]);
  29. }
  30. nums = nums.replace(temp[i], '');
  31. }
  32. arrAns = getRandomArrayElements(arrAns.concat(getRandomArrayElements(nums.split(''), 4 - arrAns.length)), 4);
  33. this.setData({ btn1: arrAns[0] });
  34. this.setData({ btn2: arrAns[1] });
  35. this.setData({ btn3: arrAns[2] });
  36. this.setData({ btn4: arrAns[3] });
  37. },

對(duì)于英文鍵盤跟上邊差不多,在“單詞拼寫”小程序中,沿用上述解決方法,只不過把0-9數(shù)字換成了a-zA-Z加上英文“'”和"-",由于英文單詞長度都比較長,無法一次全部輸入,采用的是變通的方法,每次鍵盤顯示需要當(dāng)前輸入的字母,輸入后顯示下個(gè)字母的鍵盤。具體界面如下圖:

主要代碼如下:

 

  1. MakeInputBtn: function () {
  2. if (this.data.mEnglish.length == this.data.inputValue.length) {
  3. return;
  4. }
  5.  
  6. function getRandomArrayElements(arr, count) {
  7. var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;
  8. while (i-- > min) {
  9. index = Math.floor((i + 1) * Math.random());
  10. temp = shuffled[index];
  11. shuffled[index] = shuffled[i];
  12. shuffled[i] = temp;
  13. }
  14. return shuffled.slice(min);
  15. }
  16. var letters = "abcdefghijklmnopqrstuvwxyz'- ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  17. var arrAns = [];
  18.  
  19. var currentLetter = this.data.mEnglish[this.data.inputValue.length];
  20. //console.log(currentLetter);
  21. if (currentLetter) {
  22. var temp = currentLetter.toString().split('');
  23. for (var i = 0; i < temp.length; i++) {
  24. if (arrAns.indexOf(temp[i]) == -1) {
  25. arrAns.push(temp[i]);
  26. }
  27. letters = letters.replace(temp[i], '');
  28. }
  29. arrAns = getRandomArrayElements(arrAns.concat(getRandomArrayElements(letters.split(''), 4 - arrAns.length)), 4);
  30. this.setData({ btn1: arrAns[0] });
  31. this.setData({ btn2: arrAns[1] });
  32. this.setData({ btn3: arrAns[2] });
  33. this.setData({ btn4: arrAns[3] });


本文地址:http://www.szcjxy.com/wxmini/doc/course/24310.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢: 點(diǎn)擊咨詢
在線客服