gpt4 book ai didi

javascript - 函数被调用多次?

转载 作者:行者123 更新时间:2023-12-03 01:51:58 24 4
gpt4 key购买 nike

所以我有以下函数,它调用另一个名为“change_name(event, name)”的函数。原来“change_name”被调用了不止一次?它使用的变量具有混合值。

function input_name(event, name) {
event.stopPropagation();
name.style.backgroundColor = "transparent";
window.localStorage.removeItem("oldname");
window.localStorage.setItem("oldname", name.value);
$(this).click( function()
{

change_name(event, name); } );

$(name).keydown(function(event){
if(event.keyCode == 13){
change_name(event, name);
}
});
}


function change_name(event, element) {
event.stopPropagation();
var name_input = element;
var name = name_input.value;
var oldname = window.localStorage.getItem("oldname");
// new_name.innerHTML = name;
console.log("Nombre viejo: " + oldname);
console.log("Nombre nuevo: " + name);

}

input_name 函数是元素的属性

 input.setAttribute("onclick", "input_name(event, this);");

为什么我的值(value)观变得困惑?有什么想法吗?

最佳答案

您将在每次点击 input 时添加新的 clickkeydown 事件。这些事件需要添加到点击事件之外。

// on click, input_name is called
input.setAttribute("onclick", "input_name(event, this);");

// this function is called on every click of input
function input_name(event, name) {

// new events are added on every click
$(this).click(function() {/* ? */});
$(name).keydown(function(event) {/* ? */});
}

所以做这样的事情:

// on click, input_name is called
input.setAttribute("onclick", "input_name(event, this);");

// events are added once
$(input).click(function() {/* ? */});
$(input).keydown(function(event) {/* ? */});

// this function is called on every click of input
function input_name(event, name) {
/* ? */
}

还要看看为什么你使用 $().click 创建 onclick 以及 input.setAttribute("onclick", ...) 因为你有jQuery,更喜欢使用 $().click 而不是设置属性。

关于javascript - 函数被调用多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50380140/

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