代码在JSFiddle中完美运行,但是当我把它放在html文件上时它不起作用。我自己找不到错误。
以下是工作链接Fiddle demo
而下面的代码是无效的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$('#Checkbox1, #Checkbox2').on('change', function () {
console.log();
if ($('#Checkbox1').is(':checked') && $('#Checkbox2').is(':checked')) {
$('#circle_2').css('background-color', '#999');
} else {
$('#circle_2').css('background-color', 'transparent');
}
});
</script>
<style type="text/css">
#circle_2 {
border:solid 1px #333;
width: 100px;
height: 100px;
border-radius: 50%;
display:inline-block;
}
#circle {
border:solid 1px #333;
width: 100px;
height: 100px;
border-radius: 50%;
display:inline-block;
}
.circle_text{
text-align:center;
font-family:Arial, Helvetica, sans-serif;
font-size:37px;
color:#333;
font-weight:bold;
}
</style>
</head>
<body>
<!-- Circle 1-->
<div id="position_1">
<div id="circle">
<p class="circle_text">
#1
</p>
</div>
</div>
<!-- Circle 2-->
<div id="position_2">
<div id="circle_2">
<p class="circle_text">
#2
</p>
</div>
</div>
<br/><br/>
<input type="checkbox" value="1" id="Checkbox1" name="Checkbox1"/> Answer one <br/>
<input type="checkbox" value="1" id="Checkbox2" name="Checkbox2"/> Answer two <br/>
<input type="checkbox" value="1" id="Checkbox3" name="a3"/> Answer three <br/>
<input type="checkbox" value="1" id="Checkbox4" name="a4"/> Answer four <br/>
<input type="checkbox" value="1" id="Checkbox5" name="a5"/> Answer five <br/>
<input type="checkbox" value="1" id="Checkbox6" name="a6"/> Answer six <br/>
<input type="checkbox" value="1" id="Checkbox7" name="a7"/> Answer seven <br/>
<input type="checkbox" value="1" id="Checkbox8" name="a8"/> Answer eight<br/>
<input type="checkbox" value="1" id="Checkbox9" name="a9"/> Answer nine <br/>
<input type="checkbox" value="1" id="Checkbox10" name="a10"/> Answer ten <br/>
</body>
</html>
我怀疑我错过了要加载的东西,但无法理解。
答案 0 :(得分:5)
您需要在document ready调用中包装jQuery代码。
$(document).ready(function () {
$('#Checkbox1, #Checkbox2').on('change', function () {
console.log();
if ($('#Checkbox1').is(':checked') && $('#Checkbox2').is(':checked')) {
$('#circle_2').css('background-color', '#999');
} else {
$('#circle_2').css('background-color', 'transparent');
}
});
});
或者在关闭身体标签之前。您在页面中存在元素之前执行代码。 jsFiddle.net自动将您的代码包装在文档就绪调用中。
答案 1 :(得分:1)
您的代码在加载<head>
时执行,因此复选框尚不存在。使用$(document).ready()
在页面加载完成后执行代码,或者将代码元素放在代码中使用的元素之后(在<body>
内)。
<script type="text/javascript">
$(document).ready(function(){
$('#Checkbox1, #Checkbox2').on('change', function () {
console.log();
if ($('#Checkbox1').is(':checked') && $('#Checkbox2').is(':checked')) {
$('#circle_2').css('background-color', '#999');
} else {
$('#circle_2').css('background-color', 'transparent');
}
});
});
</script>
此外,在JSFiddle中,左栏中有一个选项可以在onLoad
处理程序中执行代码。这是一个默认选项,它也可以解决您的问题。这解释了它在JSFiddle中的工作。
答案 2 :(得分:1)
JSFiddle在文档准备就绪时执行代码。您需要将其添加到本地文件中。
用以下内容替换您的Javascript:
$(document).ready(function() {
$('#Checkbox1, #Checkbox2').on('change', function () {
console.log();
if ($('#Checkbox1').is(':checked') && $('#Checkbox2').is(':checked')) {
$('#circle_2').css('background-color', '#999');
} else {
$('#circle_2').css('background-color', 'transparent');
}
});
});
答案 3 :(得分:0)
将jQuery代码包装在文档就绪函数中:
$( document ).ready(function() {
$('#Checkbox1, #Checkbox2').on('change', function () {
console.log();
if ($('#Checkbox1').is(':checked') && $('#Checkbox2').is(':checked')) {
$('#circle_2').css('background-color', '#999');
} else {
$('#circle_2').css('background-color', 'transparent');
}
});
});
还要确保您有互联网连接,因为jQuery库是在运行时从服务器加载的。如果您没有互联网,那么您的代码将无效。