用户阅读完条款内容才能激活按钮的倒计时功能

html中的内容:

<p>示例一:要求用户阅读完条款内容才能激活按钮</p>
	<form action="#" method="post" name="agree">
		<input type="submit" class="button" value="请认真查看<服务条款和声明> (30)" id="agree_btn" name="agreeb">
	</form>

js代码:

var secs = 30;
// 选中第一个按钮,并设置按钮的属性是disabled
document.agree.agreeb.disabled=true;
// 开始倒计时,更新
for(var i=1;i<=secs;i++) {
	window.setTimeout("update(" + i + ")", i * 1000);
}
// 更新数字
function update(num) {
	// 倒计时结束后
	if(num == secs) {
		// 按钮样式改为我同意,并且设置按钮为有效
		document.agree.agreeb.value =" 我 同 意 ";
		document.agree.agreeb.disabled=false;
	}
	else {
		// 计算倒计时还剩的时间,并显示出来
		var printnr = secs-num;
		document.agree.agreeb.value = "请认真查看<服务条款和声明> (" + printnr +")";
	}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来回答你的问题。 要在Java窗口上使用按钮实现倒计时功能,同样可以使用多线程来实现。具体步骤如下: 1. 创建一个继承自JFrame的窗口类。 2. 在窗口类中创建一个继承自Thread的倒计时线程类。 3. 在窗口类中创建一个JButton组件,用于开始倒计时。 4. 在JButton组件上添加一个ActionListener,用于启动倒计时线程。 5. 在窗口类的构造方法中将JButton组件添加到窗口中。 6. 在倒计时线程类中重写run()方法,实现倒计时的逻辑。 7. 在倒计时线程类中添加一个boolean类型的变量,用于控制线程的执行。 8. 在ActionListener中设置倒计时线程的控制变量为true,启动倒计时线程。 9. 在倒计时线程中判断控制变量是否为true,如果为true则执行倒计时逻辑,否则结束线程。 10. 在倒计时线程中使用SwingUtilities.invokeLater()方法更新倒计时显示。 下面是示例代码: ``` import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CountdownFrame extends JFrame { private JLabel countdownLabel; private JButton countdownButton; public CountdownFrame() { countdownLabel = new JLabel("倒计时:"); countdownLabel.setFont(new Font("微软雅黑", Font.BOLD, 18)); countdownLabel.setForeground(Color.RED); countdownLabel.setHorizontalAlignment(SwingConstants.CENTER); add(countdownLabel, BorderLayout.CENTER); countdownButton = new JButton("开始倒计时"); countdownButton.setFont(new Font("微软雅黑", Font.PLAIN, 16)); countdownButton.addActionListener(new CountdownActionListener()); add(countdownButton, BorderLayout.SOUTH); setTitle("倒计时窗口"); setSize(400, 300); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } class CountdownThread extends Thread { private boolean running = true; @Override public void run() { int count = 10; while (count >= 0 && running) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { countdownLabel.setText("倒计时:" + count + "秒"); } }); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } count--; } SwingUtilities.invokeLater(new Runnable() { @Override public void run() { countdownLabel.setText("时间到!"); } }); } public void stopRunning() { running = false; } } class CountdownActionListener implements ActionListener { private CountdownThread countdownThread; @Override public void actionPerformed(ActionEvent e) { if (countdownThread == null || !countdownThread.isAlive()) { countdownThread = new CountdownThread(); countdownThread.start(); } } } public static void main(String[] args) { new CountdownFrame(); } } ``` 在这个示例代码中,我们创建了一个继承自JFrame的窗口类,并在构造方法中创建了一个JLabel组件用于显示倒计时,并创建了一个JButton组件用于开始倒计时。然后我们创建了一个继承自Thread的倒计时线程类,在run()方法中实现了倒计时的逻辑,并添加了一个控制变量用于控制线程的执行。在ActionListener中,我们设置倒计时线程的控制变量为true,启动倒计时线程。在倒计时线程中,我们使用SwingUtilities.invokeLater()方法更新倒计时显示,并在倒计时结束时更新显示为“时间到!”。当用户再次点击开始倒计时按钮时,我们检测倒计时线程是否已经结束,如果已经结束则重新创建一个新的倒计时线程。 希望这个示例代码能够帮助到你,如果还有其他问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值