Javascript 不使用CSS的外部样式表是否导致我的代码无法执行?
您看到的代码是由一位堆栈溢出用户提供给我的,他的JSFIDLE可以在中找到。他的代码在JSFIDLE中运行良好。我把他的代码复制粘贴到我的文本板上,保存在XAMPP的htdocs文件夹中,并尝试运行它 我发现当我把光标放在汽车的图标上时,图标会放大(就像它应该放大的那样),但我不会看到图标下面出现文本框。这就是我的网页的全部想法,将鼠标放在图像上,出现一个文本框,然后用户将他的评论插入框中。当我问Stack Overflow用户为什么没有出现文本框时,一位女士亲切地指出我缺少jQuery库链接,所以我也把它放了进去 我已经检查并重新检查了代码的布局(JavaScript和jQuery链接放在head标记中,CSS代码放在style标记中),似乎没有任何错误,但代码仍然没有运行。由于没有一个脚本是服务器端的,我决定不使用XAMPP,只是将脚本保存在“我的文档”中并在浏览器上运行,但没有任何更改。有人能告诉我我做错了什么吗?如果代码在JFiddle中运行,有什么理由不应该在浏览器上运行吗?这太荒谬了Javascript 不使用CSS的外部样式表是否导致我的代码无法执行?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,您看到的代码是由一位堆栈溢出用户提供给我的,他的JSFIDLE可以在中找到。他的代码在JSFIDLE中运行良好。我把他的代码复制粘贴到我的文本板上,保存在XAMPP的htdocs文件夹中,并尝试运行它 我发现当我把光标放在汽车的图标上时,图标会放大(就像它应该放大的那样),但我不会看到图标下面出现文本框。这就是我的网页的全部想法,将鼠标放在图像上,出现一个文本框,然后用户将他的评论插入框中。当我问Stack Overflow用户为什么没有出现文本框时,一位女士亲切地指出我缺少jQuery库链接,
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript' src='//code.jquery.com/jquery-2.1.0.js'></script>
<script>
$('.car').click(function() {
$('.comment').css("visibility", "hidden");
$('#button').css("visibility", "hidden");
var id = $(this).children('label').attr('for');
var buttonOffset;
switch (id) {
case 'mercedesbenz':
buttonOffset = '0';
break;
case 'porche':
buttonOffset = '33%';
break;
case 'bmw':
buttonOffset = '66%';
break;
}
$(this).children('.comment').css("visibility", "visible");
$('#button').css("left", buttonOffset);
$('#button').css("visibility", "visible");
});
$('.comment').mouseleave(function() {
setTimeout(function() {
$('.comment').css("visibility", "hidden");
$('#button').css("visibility", "hidden");
}, 500);
});
</script>
<style>
#form {
position: absolute;
overflow: hidden;
top: 50%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%)
}
.car {
float: left;
margin: 2% 2% 5% 2%;
}
.car label img {
transform: scale(0.8);
transition-duration: 0.2s;
}
.car label img:hover {
cursor: pointer;
transform: scale(1);
}
.comment {
position: absolute;
visibility: hidden;
}
.comment input {
width: 128px;
font-size: 1em;
}
.car label img {
width: 128px;
display: block;
}
#button {
position: relative;
left: 66%;
margin: 2%;
visibility: hidden;
}
</style>
</head>
<body>
<div id="form">
<form method="post" action="#">
<div class="car">
<label for="mercedesbenz">
<img src="http://tinyurl.com/on964r9" />
</label>
<div class="comment">
<input type="text" id="mercedesbenz" placeholder="Merc" />
</div>
</div>
<div class="car">
<label for="porche">
<img src="http://tinyurl.com/on964r9" />
</label>
<div class="comment">
<input type="text" id="Porche" placeholder="Porc" />
</div>
</div>
<div class="car">
<label for="bmw">
<img src="http://tinyurl.com/on964r9" />
</label>
<div class="comment">
<input type="text" id="bmw" placeholder="Beemer" />
</div>
</div>
<input id="button" type="submit" name="submit" value="Submit">
</form>
</div>
</body>
</html>
$('.car')。单击(函数(){
$('.comment').css(“可见性”、“隐藏”);
$(“#按钮”).css(“可见性”、“隐藏”);
var id=$(this.children('label').attr('for');
var按钮偏移;
开关(id){
“mercedesbenz”案:
按钮偏移量='0';
打破
“波切”一案:
按钮偏移量='33%';
打破
案例“宝马”:
按钮偏移量='66%';
打破
}
$(this).children('.comment').css(“可见性”、“可见”);
$(“#按钮”).css(“左”,按钮偏移);
$(“#按钮”).css(“可见性”、“可见”);
});
$('.comment').mouseleave(函数(){
setTimeout(函数(){
$('.comment').css(“可见性”、“隐藏”);
$(“#按钮”).css(“可见性”、“隐藏”);
}, 500);
});
#形式{
位置:绝对位置;
溢出:隐藏;
最高:50%;
左:50%;
保证金权利:-50%;
转换:转换(-50%,-50%)
}
.汽车{
浮动:左;
利润率:2%2%5%2%;
}
.汽车标签img{
变换:比例(0.8);
过渡时间:0.2s;
}
.汽车标签img:悬停{
光标:指针;
变换:比例(1);
}
.评论{
位置:绝对位置;
可见性:隐藏;
}
.评论输入{
宽度:128px;
字号:1em;
}
.汽车标签img{
宽度:128px;
显示:块;
}
#钮扣{
位置:相对位置;
左:66%;
利润率:2%;
可见性:隐藏;
}
在加载DOM之前,您的代码正在执行。您需要在HTML之后移动代码,或者使用$(document).ready()
确保代码不会过早运行
因此,当这样的代码运行时:
$('.car').click(function() {...});
DOM中还没有.car
对象,因此无法安装事件处理程序
您可以这样做:
$(document).ready(function() {
$('.car').click(function() {...});
});
或者,您可以像这样将
标记移动到
标记之前,以便在脚本运行之前已经加载DOM元素:
<body>
... various HTML
<script>
$('.car').click(function() {...});
</script>
</body>
... 各种HTML
$('.car')。单击(函数(){…});
仅供参考,JSFIDLE的默认设置是在加载DOM之前不运行代码,这与真实网页中的代码不同,因此有时候真实网页和JSFIDLE之间存在差异。JSFIDLE可以通过左上角的下拉菜单进行设置,以控制Javascript何时运行。您的代码在加载DOM之前执行。您需要在HTML之后移动代码,或者使用
$(document).ready()
确保代码不会过早运行
因此,当这样的代码运行时:
$('.car').click(function() {...});
DOM中还没有.car
对象,因此无法安装事件处理程序
您可以这样做:
$(document).ready(function() {
$('.car').click(function() {...});
});
或者,您可以像这样将
标记移动到
标记之前,以便在脚本运行之前已经加载DOM元素:
<body>
... various HTML
<script>
$('.car').click(function() {...});
</script>
</body>
... 各种HTML
$('.car')。单击(函数(){…});
仅供参考,JSFIDLE的默认设置是在加载DOM之前不运行代码,这与真实网页中的代码不同,因此有时候真实网页和JSFIDLE之间存在差异。可以通过左上角的下拉菜单设置JSFIDLE,以控制Javascript何时运行。