Javascript 将Vanilla JS与jQuery混合,获取变量未定义错误
非常糟糕的情况是,我不得不将新代码嵌入到一些非常旧的代码中,为了让它正常工作,我不得不内联一些jQuery和一些普通的JS。现在jQuery运行良好(这是一个胜利),但是当调用vanilla JS时,会给出 未捕获引用错误:未定义重置 未捕获引用错误:未定义检查答案 我试图从控制台执行jq.reset(),但这仍然没有定义 这是内联JSJavascript 将Vanilla JS与jQuery混合,获取变量未定义错误,javascript,jquery,html,Javascript,Jquery,Html,非常糟糕的情况是,我不得不将新代码嵌入到一些非常旧的代码中,为了让它正常工作,我不得不内联一些jQuery和一些普通的JS。现在jQuery运行良好(这是一个胜利),但是当调用vanilla JS时,会给出 未捕获引用错误:未定义重置 未捕获引用错误:未定义检查答案 我试图从控制台执行jq.reset(),但这仍然没有定义 这是内联JS <script type='text/javascript'> var jq = jQuery.noConflict(t
<script type='text/javascript'>
var jq = jQuery.noConflict(true);
(function ($) {
$(document).ready(function () {
/* Drag and Drop */
//var container = document.getElementById("health");
//var content = container.innerHTML;
var correctAnswers = [
"fish and seafood",
"meat and small goods",
"poultry and game",
"dairy and egg-based foods",
"wet dishes, soups, stock and sauces",
"fruits including rock melon, watermelon, blueberries and fruit salad",
"pre-made salads",
"pate and soft cheeses",
"ice-cream",
"cooked rice and pasta"
];
var answers = [];
function checkAnswers() {
correctAnswers.sort();
answers.sort();
var result = true;
if (correctAnswers.length !== answers.length) {
result = false;
$("#incomplete").show();
} else if (correctAnswers.length == answers.length) {
for (var i = correctAnswers.length; i--; ) {
if (correctAnswers[i] !== answers[i]) {
result = false;
$("#incomplete").hide();
$("#incorrect").show();
}
}
}
if (result) {
$("#incorrect").hide();
$("#incomplete").hide();
$("#correct").show();
}
}
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
answers.push(data);
console.log(correctAnswers);
console.log(answers);
ev.target.appendChild(document.getElementById(data));
}
function dropOut(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
var index = answers.indexOf(data);
answers.splice(index, 1);
console.log(correctAnswers);
console.log(answers);
ev.target.appendChild(document.getElementById(data));
}
function reset() {
var container = document.getElementById("health");
container.innerHTML = html;
answers = [];
document.getElementById(".dropable-area").reset();
}
if ($('#health').length){
var html;
window.onload = function() {
html = document.getElementById("health").innerHTML;
};
}
$("#health").on("click",".correctKey",function() {
$("#health").find(".dropbox").each(function(index) {
$(this).text(correctAnswers[index]);
answers = correctAnswers;
});
});
});
}(jq));
</script>
var jq=jQuery.noConflict(true);
(函数($){
$(文档).ready(函数(){
/*拖放*/
//var container=document.getElementById(“健康”);
//var content=container.innerHTML;
var更正答案=[
“鱼和海鲜”,
“肉类和小商品”,
“家禽和野味”,
“乳制品和蛋类食品”,
“湿菜、汤、汤和酱汁”,
“水果包括甜瓜、西瓜、蓝莓和水果沙拉”,
“预制沙拉”,
“肉酱和软奶酪”,
“冰淇淋”,
“米饭和意大利面”
];
var回答=[];
函数checkAnswers(){
正确答案。排序();
答案:sort();
var结果=真;
if(correctAnswers.length!==answers.length){
结果=假;
$(“#不完整”).show();
}else if(correctAnswers.length==answers.length){
for(var i=correctAnswers.length;i--;){
如果(正确答案[i]!==答案[i]){
结果=假;
$(“#不完整”).hide();
$(“#不正确”).show();
}
}
}
如果(结果){
$(“#不正确”).hide();
$(“#不完整”).hide();
$(“#正确”).show();
}
}
功能allowDrop(ev){
ev.preventDefault();
}
功能阻力(ev){
ev.dataTransfer.setData(“文本”,ev.target.id);
}
功能下降(ev){
ev.preventDefault();
var data=ev.dataTransfer.getData(“文本”);
答案。推送(数据);
控制台日志(正确答案);
控制台日志(应答);
ev.target.appendChild(document.getElementById(数据));
}
功能丢失(ev){
ev.preventDefault();
var data=ev.dataTransfer.getData(“文本”);
var指数=答案.indexOf(数据);
答案:拼接(索引1);
控制台日志(正确答案);
控制台日志(应答);
ev.target.appendChild(document.getElementById(数据));
}
函数重置(){
var container=document.getElementById(“健康”);
container.innerHTML=html;
答案=[];
document.getElementById(“.dropable area”).reset();
}
如果($(“#健康”)。长度){
var-html;
window.onload=函数(){
html=document.getElementById(“健康”).innerHTML;
};
}
$(“#运行状况”)。在(“单击”,“.correctKey”,函数()上{
$(“#健康”).find(“.dropbox”).each(函数(索引){
$(此).text(更正答案[索引]);
答案=正确答案;
});
});
});
}(jq);;
调用它的HTML、带有reset()和checkAnswers()的按钮都失败了,我想把它剥离出来,放在一个单独的脚本中,但是它还有jQuery,需要对它进行包装,以保护它的版本不受文件中使用的旧版本的影响
<div class="container drag" id="health">
<div class="row dropable-area">
<div class="col-sm-12">
<div class="row">
<div class="col-sm-6">
<div class="dropbox panel panel-default" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</div>
<div class="col-sm-6">
<div class="dropbox panel panel-default" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</div>
<div class="col-sm-6">
<div class="dropbox panel panel-default" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</div>
<div class="col-sm-6">
<div class="dropbox panel panel-default" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</div>
<div class="col-sm-6">
<div class="dropbox panel panel-default" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</div>
<div class="col-sm-6">
<div class="dropbox panel panel-default" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</div>
<div class="col-sm-6">
<div class="dropbox panel panel-default" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</div>
<div class="col-sm-6">
<div class="dropbox panel panel-default" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</div>
<div class="col-sm-6">
<div class="dropbox panel panel-default" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</div>
<div class="col-sm-6">
<div class="dropbox panel panel-default" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
</div>
</div>
</div>
</div>
<div class="row answers-area">
<div class="col-sm-12">
<div class="panel panel-default answers">
<div class="panel-body" ondrop="dropOut(event)">
<div class="row">
<div class="col-md-4">
<p class="answer" draggable="true" ondragstart="drag(event)" id="fish and seafood">fish and seafood</p>
<p class="answer" draggable="true" ondragstart="drag(event)" id="meat and small goods">meat and small goods</p>
<p class="answer" draggable="true" ondragstart="drag(event)" id="packets of dry food">packets of dry food</p>
<p class="answer" draggable="true" ondragstart="drag(event)" id="poultry and game">poultry and game</p>
<p class="answer" draggable="true" ondragstart="drag(event)" id="wet dishes, soups, stock and sauces">wet dishes, soups, stock and sauces</p>
</div>
<div class="col-md-4">
<p class="answer" draggable="true" ondragstart="drag(event)" id="dairy and egg-based foods">dairy and egg-based foods</p>
<p class="answer" draggable="true" ondragstart="drag(event)" id="pre-made salads">pre-made salads</p>
<p class="answer" draggable="true" ondragstart="drag(event)" id="raw vegetables">raw vegetables</p>
<p draggable="true" ondragstart="drag(event)" id="pate and soft cheeses">pate and soft cheeses</p>
</div>
<div class="col-md-4">
<p class="answer" draggable="true" ondragstart="drag(event)" id="uncooked rice and pasta">uncooked rice and pasta</p>
<p class="answer" draggable="true" ondragstart="drag(event)" id="ice-cream">ice-cream</p>
<p class="answer" draggable="true" ondragstart="drag(event)" id="cooked rice and pasta">cooked rice and pasta</p>
<p class="answer" draggable="true" ondragstart="drag(event)" id="fruits including rock melon, watermelon, blueberries and fruit salad">fruits including rock melon, watermelon, blueberries and fruit salad</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row bottom-area">
<div class="col-md-12">
<div class="buttons">
<button class="btn btn-default" onclick="checkAnswers()">Check Answers</button>
<button class="btn btn-default correctKey">Answer Key</button>
<button class="btn btn-default" onclick="reset()">Reset</button>
</div>
<div class="messages">
<div class="alert alert-success" id="correct" style="display:none;">
<p><strong>Well done!</strong> You successfully identified the hazards!</p>
</div>
<div class="alert alert-warning" id="incomplete" style="display:none;">
<p><strong>Warning!</strong> You havn't finished identifying all the hazards.</p>
</div>
<div class="alert alert-danger" id="incorrect" style="display:none;">
<p><strong>Oh snap!</strong> It doesn't look like you have the correct hazards identified!</p>
</div>
</div>
</div>
</div>
鱼和海鲜
肉类和小商品
干粮包装
家禽和野味
湿菜、汤、汤和酱汁
乳制品和蛋基食品
预制沙拉
生蔬菜
头和软奶酪
生米和面食
冰淇淋