英语单词句子排序练习demo - javascript / html / css

啰嗦两句

准备在这个博客中,不定时的更新一些自己学习编程中尝试过的好玩儿的练习,有用的demo,觉得不错的笔记及想法。

最近发现学习英语的app上,很多都有给出几个英语单词,然后要求给正确排序的练习题。觉得挺好玩,就想自己先用web实现一下。接触编程一年多,纯属练习。如果你有更好的方法,欢迎指点~

HTML部分

由于是demo,就没有花太多心思在美化上。用到的只有html的基础功能,如添加 id / onclick / style 等。wordSort.html 代码如下:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>word sort</title> 
    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> 
    <style> 
        #content > div { 
            height: 30px; 
        } 
    </style> 
</head> 
<body> 
<div id="options"> 
    <button onclick="retry()">다시 풀기</button> 
</div> 
<div id="content"> 
    <div>Question: 
        <div id="question"></div> 
    </div> 
    <br> 
    <div>Hints: 
        <div id="words"></div> 
    </div> 
    <br> 
    <div>Your Answer: 
        <div id="user"></div> 
    </div> 
    <button id="cancel" onclick="delete()" style="display: none">취소</button> 
    <br> 
    <div>Rigth Answer: 
        <div id="sentence"></div> 
    </div> 
</div> 
<script type="text/javascript" src="/wordSort/wordSort.js"></script> 
</body> 
</html>

Javascript 部分

可以直接放到HTML的<script></script>中。wordSort.js代码如下:

var question = 'Welcome to macdonals, how can i help you?'; 
var native = 'Emm.. big mac burger, please.'; 
var wordsRow; 
var words = []; 
var dup = []; 
var indexSort = []; 
var select = []; 
var user = ""; 
wordsRow = native.split(/[ ]/); 
for (var i = 0; i < wordsRow.length; i++) { 
    if (wordsRow[i].length !== 0) { 
        words[i] = wordsRow[i].trim() + " "; 
    } 
} 

$("#question").text(question); 
creatButtons(); 
function creatButtons() { 
    var buttonList = ""; 
    for (var i = 0; i < words.length;) { 
        var randomIndex = Math.floor(Math.random() * words.length); 
        if (dup.indexOf(randomIndex) === -1) { 
            dup.push(randomIndex); 
            indexSort.push(i); 
            buttonList += "<button id='button" + i + "' value='" + words[randomIndex] + "' onclick='createSentence(this.value, this)'>"; 
            buttonList += words[randomIndex] + "</button> "; 
            i++; 
        } 
    } 
    $("#words").html(buttonList); 
} 

function createSentence(value, obj) { 
if (obj.parentNode.children.length <= words.length) { 
        $('#cancel').css("display", ""); 
    } 

    select.push(value); 
    user = user + value; 
    $("#user").html(user); 

    if (obj.parentNode.children.length === 1) { 
        setTimeout(function () { 
            if ((user).trim() === native) { 
                $('#cancel').css("display", "none"); 
                $("#sentence").text(native); 
                alert('You are right!'); 
            } else { 
                $('#cancel').css("display", "none"); 
                $("#sentence").text(native); 
                alert('You are wrong!'); 
            } 
        }, 100) 
    } 
    obj.parentNode.removeChild(obj); 
} 

function retry() { 
    dup = []; 
    indexSort = []; 
    creatButtons(); 
    user = ""; 
    $("#user").html(user); 
    $("#sentence").text(""); 
} 

function delete() { 
    user = user.split(select[select.length - 1])[0]; 
    $("#user").html(user); 
    var index = Number(words.indexOf(select[select.length - 1])); 
    for (var i = 0; i < dup.length; i++) { 
        if (dup[i] === index) { 
            if (indexSort[i] - 1 >= 0) { 
                var reforeNode = $("#button" + (indexSort[i] - 1)); 
                for (var j = 1; j <= indexSort[i];) { 
                    if (reforeNode.length === 1) { 
                        var buttonList = ""; 
                        buttonList += "<button id='button" + indexSort[i] + "' value='" + words[dup[i]] + "' onclick='createSentence(this.value, this)'>"; 
                        buttonList += words[dup[i]] + "</button> "; 
                        reforeNode.after(buttonList); 
                        break; 
                    } else if (j === indexSort[i]) { 
                        var buttonList = ""; 
                        buttonList += "<button id='button" + indexSort[i] + "' value='" + words[dup[i]] + "' onclick='createSentence(this.value, this)'>"; 
                        buttonList += words[dup[i]] + "</button> "; 
                        $("#words").prepend(buttonList); 
                        break; 
                    } else { 
                        j++; 
                        reforeNode = $("#button" + (indexSort[i] - j)); 
                    } 
                } 
            } else { 
                var buttonList = ""; 
                buttonList += "<button id='button" + indexSort[i] + "' value='" + words[dup[i]] + "' onclick='createSentence(this.value, this)'>"; 
                buttonList += words[dup[i]] + "</button> "; 
                $("#words").prepend(buttonList); 
            } 
        } 
    } 
    select.splice(select.length - 1, 1); 
    if (select.length === 0) { 
        $('#cancel').css("display", "none"); 
    } 
}

如果没有把此部分内容放到<script></script>中的话,<script type="text/javascript" src="/wordSort/wordSort.js"></script>中的src需要敲自己项目中的wordSort.js的路径。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,466评论 1 45
  • 浑源,最初的印象只是知道这里的凉粉很出名而且很美味的样子。今日第一次来领略这个小县城的美,是由于这里有五岳之一——...
    上官落若阅读 375评论 0 2
  • 淅淅零零,来来往往,自使江头,娑落络路。
    嗨馮先生阅读 169评论 0 0
  • 在我一生的中黄金阶段我有很多奢望,我想爱,想吃,想变成天空中的云彩,后来我才知道,生活就是一个缓慢的过程……...
    徐小姐123阅读 319评论 0 3