在javascript中是否有任何方法可以暂停一个函数在中间等待输入
Is there any method to pause a function in the middle waiting for input in javascript?
我需要在中间暂停JavaScript函数的执行,然后在单击表格单元格后继续执行。例如:我必须将'A'放入其中一个表格单元格中。因此,我必须单击add() (add()是一个函数),然后等待用户单击表单元格以将单元格id传递给函数。我想绑定一个点击事件到每个单元格来触发add()函数。然后我还要做一个删除函数。这是一样的,我单击删除按钮,然后等待用户单击表格单元格,将单元格id传递给函数。
那么我如何暂停函数来等待输入,就像c++: cin>>x,程序等待,直到用户输入x的值。
编辑:最后我算出来了。每次单击add按钮时,我都会为每个td绑定一个addtd函数。点击单元格后,取消addtd函数的绑定。这样下次我点击删除按钮时,我就可以在每个单元格上绑定一个deltd函数
我不完全理解这个问题。你不能暂停执行(不阻塞整个浏览器)。您只能在完成工作时设置事件侦听器。
您可以设置click
事件委托以避免将click
事件侦听器绑定到每个单元。
var textToAdd = 'A';
table.addEventListener('click', function (e) {
var td = e.target;
while (td !== this && td.tagName !== 'TD') { td = td.parentNode; }
if (td.tagName !== 'TD') return;
td.innerHTML += textToAdd;
});
无法按照您描述的方式暂停函数。你有没有想过反过来做?也就是说,当用户单击单元格时,您可以以某种方式突出显示它,然后添加和删除按钮/函数将应用于当前突出显示的单元格。
或者,您可以添加或删除"预处理",然后设置某种标志来指示您正在等待输入,然后为单元格单击事件设置一个事件处理程序,该事件处理程序检查该标志以决定下一步进行什么处理。因此,假设您已经设置了添加和删除事件处理程序来调用add()
和delete()
,并设置了表格单元格单击处理程序来调用cellClick()
,您可以尝试这样做:
var clickCallback = null;
function add() {
// do your preprocessing here
clickCallback = function(clickedCell) {
// do further processing here
};
}
function delete() {
// do your delete preprocessing here
clickCallback = function(clickedCell) {
// do further processing here
};
}
function cellClick(e) {
e = e || window.event;
var clickedElement = e.srcElement || e.target;
if (clickCallback != null) {
clickCallback(clickedElement);
clickCallback = null;
}
}
在处理点击之后,回调被设置回null,这样多次点击不会做任何事情。显然,如果用户采取的其他操作应该取消其余的处理,那么只需将回调设置为空,然后也。
请注意,通过在add()
和delete()
函数中直接定义回调,它们(回调函数)将访问add()
和delete()
的局部变量,即使回调直到稍后才执行(闭包的魔力)。
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟