JavaScript变量在第二次单击事件时间后取消设置
JavaScript variable unset after the second click event time
我有一段代码,它提出了一个问题
askQuestion()它在页面加载时运行,并在单击id为
wb_option_button的按钮时再次运行。但我注意到,在第一次点击时,它运行良好,但第二次点击从未运行过。我想知道(万一)它出了什么问题,以及如何让它发挥作用。
var q_selected;
var q_number = 1;
var questionDiv = $('.wb_questions');
var optionDiv = $('div#wb_options');
function askQuestion()
{
questionDiv.html(questions[q_number]['question']);
optionDiv.html('<button class="wb_option_button" id="wb_option_button" title="click to answer">'+questions[q_number]['options'][0]+'</button>'+
'<button class="wb_option_button" id="wb_option_button" title="click to answer">'+questions[q_number]['options'][1]+'</button>'+
'<button class="wb_option_button" id="wb_option_button" title="click to answer">'+questions[q_number]['options'][2]+'</button>'+
'<button class="wb_option_button" id="wb_option_button" title="click to answer">'+questions[q_number]['options'][3]+'</button>'
);
}
function checkAnswer(q_answer)
{
if(q_selected === q_answer)
{
return true;
}
}
function isCheckpoint()
{
if(checkpoints[q_number]!=null)
{
return true;
}
else
{
return false;
}
}
askQuestion();
$('button.wb_option_button').click(function(){
q_selected = $(this).text();
if(checkAnswer(questions[q_number]['answer'])===true)
{
if(isCheckpoint()===true)
{
showRank(q_number);
}
else
{
q_number+=1;
//alert(q_number);
askQuestion();
// showStage();
return q_number;
}
}
else
{
alert("You failed");
}
});
var问题是一个对象,var检查点也是一个对象。
所有的按钮都有相同的ID。当你通过ID获取元素时,它只会返回它用这个ID找到的第一个元素。如果你想获取多个元素,你必须用另一个选择器来获取它们,即通过className或任何其他方式,然后通过ID。
编辑:您实际上是在按className选择按钮。问题是,当您再次调用askQuestion()
时,点击侦听器不会添加到新按钮中,因此您可能希望将点击事件分配移动到askQuestion
中
希望这能有所帮助。
经过进一步的挖掘,我得到了这个完美的解决方案。
感谢大家的帮助
$('.wb_options').on('click','.wb_option_button',function(){
q_selected = $(this).text();
if(checkAnswer(questions[q_number]['answer'])===true)
{
if(isCheckpoint()===true)
{
showRank(q_number);
}
else
{
q_number+=1;
askQuestion();
alert(q_number);
// showStage();
//return q_number;
}
}
else
{
alert("You failed");
}
});
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- jquery点击函数select&取消选择
- Java脚本时间添加
- Json数据包含日期和时间格式
- 如何根据时间运行不同的脚本
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 在wordpress一定时间后更改自定义字段
- 更改angularjs中的日期-时间格式
- 将当前时间添加到我的页面上的特定部分
- 使用Jquery选择或取消选择ListView中的所有复选框
- 门户网站:当地时间有多有用
- 显示时间的脚本
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- Ajax jQuery同时进行多个调用-等待应答的时间很长,无法取消
- JavaScript变量在第二次单击事件时间后取消设置
- 取消请求动画设置时间后的帧
- 如果未经过时间,取消鼠标悬停
- 鼠标经过时间后激活弹出菜单,然后在鼠标离开时取消激活
- 我可以“;取消”;在更新面板中发生的长时间运行的进程
- 如何立即或在一段时间后取消/隐藏窗口警报