尝试在javascript / jquery中创建“停止计时器”

时间:2018-07-11 11:03:24

标签: javascript jquery

我有一个输入字段,当一个单词正确时,这些输入字段会变为按钮。但是,现在我希望在不再存在输入字段时停止计时器。怎么做?这是我启动计时器的方式:

$(document).one('keydown', '.syl-input', function(){
T.start();
});

现在:我想创建一个检查以查看此输入字段是否仍然存在:

var sylInput = $('<input/>', {
 'type': 'text',
 'class': 'form-control syl-input',
 'name':  +c++,
 'id': +idsyll++
  })

如果不再存在,则应停止计时器T.stop(),但只要有输入字段,就不应触发它。我确实找到了一些与我想要的东西有关的东西,但这并不完全是我想要的-> Is there an "exists" function for jQuery?

我想到了下一件事(基于上面的链接)

if ('.syl-input' === 0) {
T.stop();
}

但是我认为在创建此each语句之前应该有一个if循环吗?

要向您展示我输入字段所在的完整代码(也许会改变游戏规则)?

$.map(exercise.syllables, function (syllable, j) { 
if (!syllable || !syllable.trim().length) {
// If it doesn't exist or is an empty string, return early without creating/appending elements
return;
}

var innerSylCol = $('<div/>', {
class: 'col-md-3 inputSyllables'
});

var sylInput = $('<input/>', {
'type': 'text',
'class': 'form-control syl-input',
'name':  +c++,
'id': +idsyll++
 }).on('blur', function() {
 var cValue = $(this).val();

if(cValue === "") {
   return;
}

if (cValue === syllable) {
correctSylls.push(cValue);
console.log(correctSylls);
}

if (exercise.syllables.length === correctSylls.length) {
$(this).closest('.syll-row').find('input.syl-input').each(function () { 
$(this).replaceWith(getCorrectBtn($(this).val()))
});

S.addRight();
S.playRight();

} else if (cValue !== syllable){
 // $(this).css({'color':'#e00413'});
  S.playWrong();
  S.addWrong();
 }
});

 innerSylCol.append(sylInput);
sylRow.append(innerSylCol);
});
 idsyll = 0;

 sylCol.append(sylRow);

 exer.append(colLeft, sylCol);

  exerciseArea.append(exer);
 });
return exerciseArea;
}

1 个答案:

答案 0 :(得分:0)

您在正确的轨道上。您只需要将其更改为jQuery选择器,就像这样

$('.syl-input')

并检查返回对象的length属性,就像这样

if ( $('.syl-input').length ) {
    T.stop();
}

如您所引用的答案中所述,JavaScript值是真实的,这意味着您可以在控制流的IF语句中使用它们。