如何添加一个可拖放的目标id到if语句来检查正确的答案
Javascript Drag and drop How to add a droppable target id into if statement to check correct answers?
我正在javascript中做一个拖放任务。这个想法是将三个可能的答案中的任何一个拖到特定的目标区域(例如,测量1行1等)。在"升G"的情况下,可能有2个正确答案。我尝试实现一个控制结构来检查正确答案。到目前为止,我只有条件语句的第一部分:它检查可拖动id。我如何添加条件语句的第二部分来检查可删除的id?例如,只有在以下情况下才应考虑正确答案:
draggable id (data) == "measure_1_sharp" AND dropgable id (dropTarget) == "m_1_l_1.5" OR "m_1_l_5.5".
到目前为止,我有以下代码草案:
http://jsfiddle.net/L5tgokfj/5/<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="../css/main_css.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"> </script>
</head>
<body>
<div id="m_1_l_5.5" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "g_sharp measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#fff;">measure 1 line 5.5
</div>
<div id="m_1_l_5" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "g_sharp measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#007fff;">measure 1 line 5
</div>
<div id="m_1_l_4.5" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "g_sharp measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#fff;">measure 1 line 4.5
</div>
<div id="m_1_l_4" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "other measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#907f99;">measure 1 line 4
</div>
<div id="m_1_l_3.5" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "g_sharp measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#fff;">measure 1 line 3.5
</div>
<div id="m_1_l_3" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "other measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#e00e97;">measure 1 line 3
</div>
<div id="m_1_l_2.5" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "g_sharp measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#fff;">measure 1 line 2.5
</div>
<div id="m_1_l_2" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "other measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#eeef97;">measure 1 line 2
</div>
<div id="m_1_l_1.5" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "g_sharp measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#fff;">measure 1 line 1.5
</div>
<div id="m_1_l_1" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "g_sharp measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#15ef97;">measure 1 line 1
</div>
<div id="m_1_l_0.5" ondrop="drop(event, this)" ondragover="allowDrop(event)" class= "g_sharp measure_1_grand_staff dropTarget_1" style="width:200px;height:25px; background-color:#fff;">measure 1 line 0.5
</div>
<div id = "question_1_a_notes">
<ul class="note_1_a_inline">
<li id = "q_1_a_note_1">G sharp</li>
</ul>
</div>
<div class = "additional_instructions" id = "task_1_a">Click a note and accidental (if needed) and drag-and-drop it to an appropriate place on the staff.
</div>
<div id="navcontainer_1a">
<ul id = "button_list">
<li class = "measure_1 button_small" id = "measure_1_note" draggable="true" ondragstart="drag(event)">O</li>
<li class = "measure_1 button_small" id = "measure_1_sharp" draggable="true" ondragstart="drag(event)">♯ O</li>
<li class = "measure_1 button_small" id = "measure_1_flat O" draggable="true" ondragstart="drag(event)">♭ O</li>
</ul>
</div>
<script>
var totalCorrectAnswers = 0;
function drag(ev) {
ev.dataTransfer.setData("text/html", ev.target.id);
}
function allowDrop(ev) {
ev.preventDefault();
}
function drop(ev,target) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text/html");
ev.target.appendChild(document.getElementById(data));
if(data=="measure_1_sharp") {
console.log(data);
console.log(dropTarget.id);
totalCorrectAnswers ++;
console.log("You have provided " + totalCorrectAnswers + " correct answer(s)");
} else {
console.log(data);
console.log("Wrong!!!");
console.log(dropTarget.id);
}
}
$(document).ready(function() {
}); // end ready
</script>
</div>
</body>
</html>
我希望我正确理解了这个问题。(我的英语不是很好,我的答案很简单:-D)
在函数中已经有了dropTarget。(参见drop函数的参数:ev和target。)参数target是你的dropTarget。
所以你可以通过使用
来获取dropTarget idfunction drop(ev,target) {
ev.preventDefault();
var dropTarget = target;
...
if(data=="measure_1_sharp"
&& (dropTarget.id=="m_1_l_1.5" || dropTarget.id=="m_1_l_5.5")) {
...
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如果 a 为 false,则 if(a) === if(false)
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- 正在尝试使用if和else添加类,但无法正常工作
- 在PHP中使用javascript更改页面标题'if'
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- 什么是&&在没有if的行中的变量之间
- 另一个if(!$scope.$$phase)$scope$apply()szenario-需要帮助才能通关
- Sharepoint JScript if语句未执行
- Javascript:If-then语句在函数中不起作用
- for循环中的javascript if语句找不到==
- 如果消息框答案为YES,则用Javascript填写表单
- jquery if语句返回return wong语句
- If else语句包含多个答案
- 为什么我的函数if/else-if/else-if语句返回相同的答案
- IF语句多个答案-相同的结果Javascript
- 如何添加一个可拖放的目标id到if语句来检查正确的答案