按钮

闭包

喜欢而已 提交于 2020-02-27 15:11:41
html <button>测试1</button> <button>测试2</button> <button>测试3</button> js //错误 var btns = document.getElementsByTagName('button') for (var i = 0; i < btns.length; i++) { btns[i].onclick = function() {//事件回调函数:必须等到主线程的任务执行完毕,才能执行事件回调函数。 console.log(this) } } //正确1 for (var i = 0; i < btns.length; i++) { btns[i].index = i; //给每个按钮绑定一个自定义属性 index ,存住每个i btns[i].onclick = function() { console.log(this.index) } } //正确2:闭包解决 for (var i = 0; i < btns.length; i++) { //立即执行函数 ;(function(i) { //此处i是形参 btns[i].onclick = function() { console.log(i) } })(i) //此处i是实参 } 来源: https://www.cnblogs.com/maizilili/p

Android Hook入门

给你一囗甜甜゛ 提交于 2020-02-27 14:37:36
Hook系统源码实现权限管理架构。 简单的一个hook思想体现: 1. 准备工作 点击按钮,在不更改源代码的基础上,动态修改 button 文字内容。 Button button = findViewById(R.id.btn); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e(TAG, "button 文本内容: " + ((Button) v).getText()); } }); 思路:通过 hook 思想,在 onClick() 方法执行前,修改代码即可。即 将 View.OnClickListener 接口对象替换成自己的代理对象。 public void setOnClickListener(@Nullable OnClickListener l) { // .... getListenerInfo().mOnClickListener = l; } 即 set进去的变量 l 最终赋值给 getListenerInfo().mOnClickListener 也就是 android.view.View.ListenerInfo#mOnClickListener 变量 2. 代理一个 View.OnClickListener

Android-常用标签-Button的事件方法

人走茶凉 提交于 2020-02-27 14:27:52
Button的事件方法有两种写法: 第一种是相对与控件较少的情况: < Button android : id = "@+id/btn_one" android : layout_width = "match_parent" android : layout_height = "wrap_content" android : onClick = "click" android : text = "按钮1" / > 我们可以在xml文本添加onclick属性然后再mainactivity.java里面写click方法: //初始化控件 myBtn_one = ( Button ) findViewById ( R . id . btn_one ) ; //通过实现onclick()方法,实现按钮1的点击事件 public void click ( View v ) { //写入方法 } 第二种相对那种控件较多的时候采用的方法: 第二种则不需要再mainactivity.xml里面添加onclick属性而是再mainactivity.java里面添加监听事件重写onclick方法然后使用switch循环语句。 //初始化控件 myBtn_two = ( Button ) findViewById ( R . id . btn_two ) ; myBtn_two = ( Button )

蓝牙

折月煮酒 提交于 2020-02-27 14:09:18
蓝牙客户端 package com.example.day5_bluetooth; import android.Manifest; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothManager; import android.bluetooth.BluetoothSocket; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Build; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util

UML类图详解

巧了我就是萌 提交于 2020-02-27 13:06:38
类的UML图示 在UML中,类使用包含 类名 、 属性 和 方法 且带有分隔线的矩形来表示,如定义一个Employee类,它包含属性name、age和email,以及方法modifyInfo(),在UML类图中该类如图1所示: 在UML类图中,类一般由三部分组成: (1) 第一部分是 类名 (2) 第二部分是类的 属性 (Attributes):即类的成员变量。一个类可以有任意多个属性,也可以没有属性 UML规定属性的表示方式为: 可见性 名称:类型 [ = 缺省值 ] 其中: “可见性” 用符号+、-和#表示 : public + private - protected # (3) 第三部分是类的 方法 (Operations): UML规定操作的表示方式为: 可见性 名称(参数列表) [ : 返回类型] 其中: “可见性”的定义与属性的可见性定义相同。 方法的示意图参考图2 标题类与类之间的关系(1) 1. 关联关系 关联关系又可进一步分为单向关联、双向关联和自关联。 (1)单向关联 我们可以看到,在UML类图中单向关联用一个 带箭头的直线 表示。 上图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类实现。 应的Java代码片段如下: public class Customer { private Address address ;

GUI编程-图形用户界面编程

流过昼夜 提交于 2020-02-27 10:42:43
1、GUI简介 GUI的核心技术:Swing、AWT。 现在基本没人使用。 为什么学习GUI: 1、可以写一些小工具 2、工作时候,有可能需要维护到Swing界面 3、了解MVC架构,了解监听。 2、AWT(抽象的窗口工具) 包含了很多的类和接口。存在于java.awt包下。 元素:窗口、按钮、文本框…… 2.1、组件和容器 Frame(窗口) //gui的第一个界面 public class FrameTest { public static void main ( String [ ] args ) { Frame frame = new Frame ( "我的第一个gui窗口" ) ; //设置可见性 frame . setVisible ( true ) ; //设置窗口大小 frame . setSize ( 300 , 300 ) ; //设置背景颜色 frame . setBackground ( new Color ( 9 , 9 , 255 ) ) ; //设置弹出的初始位置 frame . setLocation ( 200 , 200 ) ; //设置窗口大小固定 frame . setResizable ( false ) ; //默认是true,不固定 false固定 } } 停止java程序,才可以关掉窗口。 public class

asp.net控件开发基础(8)

谁说我不能喝 提交于 2020-02-27 07:51:54
上一篇 写了复合控件基本的概念,这次就继续上次的话题,来学习复合控件如何触发事件 有一些复合控件直接把按钮触发事件所需的事情封装好,另外一种则是自定义事件,更具灵活性,当然这是根据需要设计的。以下会以例子来说明的.下面我们假设我们控件中有两个按钮.以下不列出所有代码,具体可在文章最后下载代码. (1) 直接实现按钮事件 在控件中(以下代码并非实现复合控件)直接实现事件则无需自定义事件,如下代码(如果对数据回传有些不熟悉的话,可先看第三篇,希望对你有帮助) 示例一 (只列出局部代码,具体可在文章最后下载代码) void IPostBackEventHandler.RaisePostBackEvent( string eventArgument) { if (eventArgument == " Previous " ) PreviousText = " 你点击了PreviousText按钮 " ; else if (eventArgument == " Next " ) NextText = " 你点击了NextText按钮 " ; } protected override void RenderContents(HtmlTextWriter writer) { writer.AddAttribute(HtmlTextWriterAttribute.Onclick, Page

asp.net控件开发基础(3)

ぃ、小莉子 提交于 2020-02-27 07:49:53
上一篇:http://www.cnblogs.com/Clingingboy/archive/2006/08/01/465397.html 上次讲了在继承Control类的时候为什么需要重写Render方法 本次来介绍控件的事件处理. 我们知道Button控件有OnClick事件,DropDownList控件有SelectedIndexChanged事件. 一.回发事件和客户端回发 下面来看一个最简单的例子 按钮单击事件 1 protected void Button1_Click( object sender, EventArgs e) 2 { 3 Label1.Text = " 你好: " + TextBox1.Text; 4 } 大家知道Web 服务器控件创建的按钮的类型有三种 1.Button 2.LinkButton 3.ImageButton 打开MSDN看到三个控件都继承 IPostBackEventHandler接口 IPostBackEventHandler接口 专门定义了处理回发事件的方法,说白了就是onclick事件,如果自定义控件需要处理回发事件,你就需要继承 IPostBackEventHandler接口,然后实现接口的 RaisePostBackEvent 方法,另外一个简单的方法就是直接继承Button控件就可以了.

几种防止表单重复提交的方法

时光总嘲笑我的痴心妄想 提交于 2020-02-27 07:23:40
表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如: 点击提交按钮两次。 点击刷新按钮。 使用浏览器后退按钮重复之前的操作,导致重复提交表单。 使用浏览器历史记录重复提交表单。 浏览器重复的HTTP请求。   几种防止表单重复提交的方法    禁掉提交按钮。 表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。   我之前的文章曾说过用一些Jquery插件效果不错。    Post/Redirect/Get模式。 在提交后执行页面重定向,这就是所谓的 Post-Redirect-Get (PRG)模式 。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。   这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。    在session中存放一个特殊标志。 当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。   如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。

防止表单重复提交的几种策略

孤者浪人 提交于 2020-02-27 06:38:00
表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如: • 点击提交按钮两次。 • 点击刷新按钮。 • 使用浏览器后退按钮重复之前的操作,导致重复提交表单。 • 使用浏览器历史记录重复提交表单。 • 浏览器重复的HTTP请求。 几种防止表单重复提交的方法 禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。 我之前的文章曾说过用一些Jquery插件效果不错。 Post/Redirect/Get模式。在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。 这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。 在session中存放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。 如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。