gpt4 book ai didi

javascript/jquery 变量未定义

转载 作者:行者123 更新时间:2023-12-01 00:54:14 24 4
gpt4 key购买 nike

该脚本有 5 个面板,其中 3 个是可选的并触发下面的 onclick 事件。

它工作正常,甚至会提醒“selectedID”的值

但是当我尝试更改输入上的值并触发单击时,keyup 会给出错误“selectedID 未定义”

这是我的 JS

    jQuery(document).ready(function($) {

///////////
$("div.door").click(function () {

resetall();
$("div.door").removeClass("panelselected");
$(this).toggleClass("panelselected");
var selectedID = $(this).attr("id");
alert(selectedID);


$("#customisedoor").fadeIn("slow");
$("#"+selectedID).animate({
height: 118-Number($("#doorheight").val())*2+"px"

}, 200 );
var height = 118-Number($("#doorheight").val())*2;
var topmargin = Number($("#doorheight").val())*2;
$("#"+selectedID).css("margin-top", topmargin+"px");
////////////////////////////IF PANEL 2
if(selectedID === 'panel2'){
$("#panel1").append('<img src="images/draught-skirts/button.png" class="button right appended"/>');
$("#panel3").append('<img src="images/draught-skirts/button.png" class="button left appended"/>');
}
///////////////////////IF PANEL 3
if(selectedID === 'panel3'){
$("#panel2").append('<img src="images/draught-skirts/button.png" class="button right appended"/>');
$("#panel4").append('<img src="images/draught-skirts/button.png" class="button left appended"/>');
}
/////////////////////////
///////////////////////IF PANEL 3
if(selectedID === 'panel4'){
$("#panel3").append('<img src="images/draught-skirts/button.png" class="button right appended"/>');
$("#panel5").append('<img src="images/draught-skirts/button.png" class="button left appended"/>');
}
/////////////////////////
});

$("#doorwidth").keyup(function (){

$("#"+selectedID).animate({
width: $("#doorwidth").val()*2+"px"
}, 200 );
$("#totalwidth").val(
parseInt(300) + parseInt($("#doorwidth").val())
);

});
$("#doorwidth").click(function (){

$("#"+selectedID).animate({
width: $("#doorwidth").val()*2+"px"
}, 200 );
$("#totalwidth").val(
parseInt(300) + parseInt($("#doorwidth").val())
);

});
function calculateheight(){
$("#"+selectedID).animate({
height: 118-$("#doorheight").val()*2+"px"

}, 200 );
height = 118-$("#doorheight").val()*2;
topmargin = $("#doorheight").val()*2;
$("#"+selectedID).css("margin-top", topmargin+"px")
}

$("#doorheight").keyup(function (){
calculateheight();
});

$("#doorheight").click(function (){
calculateheight();

});

function resetall(){
$(".appended").remove();
$(".door").css({'width':'150','height':'118','margin':'0px'});
$(".door").removeClass("panelselected");
$("#doorheight").val(30);
$("#doorwidth").val(75);
$("#totalwidth").val(300+$("#doorwidth").val());

}

$("#reset").click(function () {
//alert("removed");
resetall();
});
//////////////////////////////////////////////////////////////////

});

来自 Firefox 的完整源代码

<!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>
<!-- JS -->

<script type="text/javascript" src="plugins/validator/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="plugins/ui/jquery.effects.core.js"></script>



<!-- STYLES -->

<style>
<!-- LAYOUT -->


<!-- SKIRTS -->
.panelContainer{
height:128px;
width:900px;
float:left;
}

.endpanel{
width:150px;
float:left;
height:118px;
background:#BFDDF2;
border:1px solid #7DB8DB;
}
.panel{
width:150px;
bottom:0;
float:left;
height:118px;
background:#BFDDF2;
border:1px solid #7DB8DB;
}

.mid{
border-left:0px;
}

.door:hover{
width:150px;
float:left;
height:118px;
background:#ECF5FB;
border:1px solid #fff;
}

.panelselected{
width:150px;
float:left;
height:118px;
background:#ECF5FB;
border:1px solid #fff;
}
.container{
min-width:150px;
width:auto;
float:left;
margin-top:3px;
height:7px;
}

.button{
width:7px; height:7px;
margin:3px;

}
.left{float:left;}
.right{float:right;}






</style>
</head>

<body>
<div style="width:780px; height:80px;float:left;">
<h3>Please select a panel and customise the width and height to fit under your door step / doorway</h3>

<ul>
<li>Total Draught Skirt Width: <input type="text" disabled id="totalwidth" value="375"/>(CMS) </li>
</ul>
</div>
<!-- CUSTOMISE DOOR -->



<div style="margin-top:20px; min-width:780px; height:80px;float:left;position:relative;">
<div class="endpanel" id="panel1">
<img src="images/draught-skirts/button.png" class="button left"/>
</div>
<div id="panel2" class="panel mid door">

</div>
<div id="panel3" class="panel mid door"></div>
<div id="panel4" class="panel mid door"></div>
<div class="endpanel mid" id="panel5">

<img src="images/draught-skirts/button.png" class="button right"/>
</div>
</div>

<div id="customisedoor" style="clear:both; margin-top:50px;width:400px; height:80px;float:left; display:none;">


<strong>Customise Your Door Panel</strong>
<table>
<tr>
<td>Width</td>

<td>
<input type="number" name="width" id="doorwidth" value="75"/>(CMS)
</td>
</tr>
<tr>
<td>Height From Top of Skirt: </td>
<td>
<input type="number" name="height" id="doorheight" value="30"/>(CMS)
</td>

</tr>
<tr>
<td></td>
<td><input type="button" id="reset" value="Reset"/></td>
</tr>
</table>


</div>

<script type="text/javascript">

jQuery(document).ready(function($) {

///////////
$("div.door").click(function () {
resetall();
$("div.door").removeClass("panelselected");
$(this).toggleClass("panelselected");
var selectedID = $(this).attr("id");


$("#customisedoor").fadeIn("slow");
$("#"+selectedID).animate({
height: 118-Number($("#doorheight").val())*2+"px"

}, 200 );
var height = 118-Number($("#doorheight").val())*2;
var topmargin = Number($("#doorheight").val())*2;
$("#"+selectedID).css("margin-top", topmargin+"px");
////////////////////////////IF PANEL 2
if(selectedID === 'panel2'){
$("#panel1").append('<img src="images/draught-skirts/button.png" class="button right appended"/>');
$("#panel3").append('<img src="images/draught-skirts/button.png" class="button left appended"/>');
}
///////////////////////IF PANEL 3
if(selectedID === 'panel3'){
$("#panel2").append('<img src="images/draught-skirts/button.png" class="button right appended"/>');
$("#panel4").append('<img src="images/draught-skirts/button.png" class="button left appended"/>');
}
/////////////////////////
///////////////////////IF PANEL 3
if(selectedID === 'panel4'){
$("#panel3").append('<img src="images/draught-skirts/button.png" class="button right appended"/>');
$("#panel5").append('<img src="images/draught-skirts/button.png" class="button left appended"/>');
}
/////////////////////////
});

$("#doorwidth").keyup(function (){
alert("IDis"+selectedID);
$("#"+selectedID).animate({
width: $("#doorwidth").val()*2+"px"
}, 200 );
$("#totalwidth").val(
parseInt(300) + parseInt($("#doorwidth").val())
);

});
$("#doorwidth").click(function (){
alert("IDis"+selectedID);
$("#"+selectedID).animate({
width: $("#doorwidth").val()*2+"px"
}, 200 );
$("#totalwidth").val(
parseInt(300) + parseInt($("#doorwidth").val())
);

});
function calculateheight(){
$("#"+selectedID).animate({
height: 118-$("#doorheight").val()*2+"px"

}, 200 );
height = 118-$("#doorheight").val()*2;
topmargin = $("#doorheight").val()*2;
$("#"+selectedID).css("margin-top", topmargin+"px")
}

$("#doorheight").keyup(function (){
calculateheight();
});

$("#doorheight").click(function (){
calculateheight();

});

function resetall(){
$(".appended").remove();
$(".door").css({'width':'150','height':'118','margin':'0px'});
$(".door").removeClass("panelselected");
$("#doorheight").val(30);
$("#doorwidth").val(75);
$("#totalwidth").val(300+$("#doorwidth").val());

}

$("#reset").click(function () {
//alert("removed");
resetall();
});
//////////////////////////////////////////////////////////////////

});
</script>

</body>
</html>

最佳答案

selectedID 超出范围 - 它在 click(...) 函数内定义,如下所示...

$("div.door").click(function () {
...
var selectedID = $(this).attr("id");
...
});

这意味着selectedID仅存在于onClick匿名函数中。它在 keyup(...) 函数中不可用。

$("#doorwidth").keyup(function (){
...
// selectedID is not available here, since it was declared inside click(...)
);

你会想要这样的东西......

jQuery(document).ready(function($) {
// Define selectedID in an outer scope so it's available to all functions inside the closure.
var selectedID;
$("div.door").click(function () {
...
// Instead of declaring selectedID inside this function, use selectedID from the outer scope.
selectedID = $(this).attr("id");
...
});

$("#doorwidth").keyup(function (){
// NULL check for selected ID
if (selectedID) {
$("#"+selectedID).animate({
width: $("#doorwidth").val()*2+"px"
}, 200 );
$("#totalwidth").val(parseInt(300) + parseInt($("#doorwidth").val());
}
);

...
});

关于javascript/jquery 变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5451856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com