gpt4 book ai didi

javascript - 方法在第二次运行时调用两次 - JavaScript

转载 作者:行者123 更新时间:2023-11-30 00:24:36 29 4
gpt4 key购买 nike

我在做什么:因此,我在此网页中使用了 jQuery、Bootstrap 和 Font Awesome。这将创建一个用于输入的文本框,当用户完成输入并按下“输入”时,该项目将添加到 list 中。

有什么问题:当我将第一项添加到核对 list 时,它工作正常。但是当我尝试添加下一个时,它显示了两个输入框,一个在正确的位置,一个在左上角

/* Defining Variables */   
var toggled = false;
var thing = "";
var inMethod = false;

/* Defining Methods */
$(document).on("click", "#toggle", function() {
if($(this).attr("class") == "fa fa-check-square-o fa-5x checked") {
$(this).attr("class", "fa fa-square-o fa-5x unchecked");
}
else {
$(this).attr("class", "fa fa-check-square-o fa-5x checked");
}
console.log();
});
function newThing() {
$("body").html($("body").html() + "<div id='input'><div class='input-group margin-bottom-sm' id='imad'><span class='input-group-addon'><i class='fa fa-file-text-o fa-1x'></i></span><input id='myInput' class='form-control' type='text' placeholder='Input'></div></div>");
inMethod = true;
console.log(inMethod);
var box = $("#input");
var ema = $("#imad");

box.css("top", screen.height / 2 - 175);
box.css("left", screen.width / 2 - 175);

ema.css("top", screen.height / 64);
ema.css("left", screen.width / 64);
}
window.addEventListener("keydown", function(e){
if(e.keyCode == 13 && inMethod) {
thing = $("#myInput").val();
$("#checklist").html( $("#checklist").html() + "<div id='checkOption'><i id='toggle' class='fa fa-square-o fa-5x unchecked'></i><span id='ds' class='fa fa-4x'>" + thing + "</span></div>" );
window.location.hash = "";
inMethod = false;
console.log(inMethod);
$("#input").remove();
}
});
$(window).on('hashchange', function() {
if(window.location.hash.substr(1) == "new") {
inMethod = false;
newThing();
} else if(window.location.hash.substr(1) == "clear") {
$("#checklist").html("");
} else if(window.location.hash.substr(1) == "delete") {
alert("Disabled for now");
}
});

你可以看到这个工作的例子 here .

转载:
1. 打开下拉菜单
2. 点击“新建”,
3. 输入内容并按“回车”,然后重复步骤 1 和 2。

最佳答案

您实际上是在复制整个 <body> ,包括脚本,这就是事件成倍增加的原因。

代替:

$("body").html($("body").html() + "...

使用类似 append 的方法:

$("body").append("...

虽然以上也不是一个好主意,但我强烈建议您设置一个主容器 <div id="container">里面的元素body并在里面修改你的 HTML,而不影响 javascript 标签。

<body>

<div id="container">
All contents goes here
</div>

<script type="text/javascript">
// ...
function newThing(){
$("#container").append("...");
// ...
}
// ...
</script>

</body>

关于javascript - 方法在第二次运行时调用两次 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31906637/

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