今天小菜处理下拉菜单级联问题时,想获取HTML标签中某个事件的内容,也就是值,比如从<select id="city" onchange="javascript:test();"></select>中获取javascript:test();。
小菜想通过事件中的信息,确定下一级的菜单,但是这个貌似很简单的问题,却让小菜纠结了一番。
稍微懂点JQuery的童鞋,可能会尝试这样获取:
$(document).ready(function(){ var onchangeValue = $("#city").attr("onchange"); alert(onchangeValue); });
一般情况下,这样的确可以获取到,因为JQuery万能的attr方法,可以获取标签中任何的”属性”,即使是一个事件,也可以直接获取内容,这里onchange就是事件。
但小菜在实际开发环境中,用这个方法怎么也获取不到,得到的均是undefined。
在纠结之际,发现了另外一种用纯JavaScript实现获取的方法。
具体代码如下:
$(document).ready(function(){ var onchangeValue = document.getElementById("city").getAttributeNode("onchange").nodeValue; alert(onchangeValue); });
简单说一下,这里主要是用到了getAttributeNode()这个方法,它获取的是属性节点,忽略属性和事件的差别,类似于对XML的处理,然后再用nodeValue获得属性节点的节点值。
如果使用getAttribute()方法,由于onchange是一个事件,因此获取的是一个函数对象,无法当成字符串处理。
希望这篇文章能够帮助需要的童鞋。。。。。
问题内容: 从和/或内部,如何确定复选框的新状态? 问题答案: 简短的答案: 使用该事件,直到值更新后才会触发,并在您希望它触发时触发: 更长的答案: 该事件处理函数不是调用,直到状态已经更新,但因为(蒂姆·布泰在评论中指出)IE不火,直到选框失去焦点的事件,你没有得到主动通知。更糟的是,与IE浏览器,如果你点击一个标签的复选框(而不是复选框本身)进行更新,你可以得到的印象是。这是因为如果复选框具
问题内容: 我在输入元素中使用了“ ng-model”,并用chrome inspector观察了该元素。但是输入元素的每个onxxx属性(包括onchange)都是空的。然后,AngularJS如何捕获用户输入触发的“ onchange”事件? 问题答案: 如果在Chrome的“事件监听器”标签中检查了标准文本输入元素(已附加ng- model),则会看到该元素具有两个事件监听器:和。 默认情况
出于某种原因,不会显示警报,而是加载页面。有人知道这是为什么吗? 在这种情况下不使用jQuery。
问题内容: 如何监听基于控件的更改事件? http://jsfiddle.net/NV/kb3gN/1621/ 问题答案: 编辑: 请参阅SebastienLorber的答案,该答案修复了我的实现中的错误。 编辑06/2016:我刚刚遇到了一个新问题,当浏览器尝试“重新格式化”刚刚给他的html时,会导致组件始终重新呈现,这会出现一个新问题。看到 编辑07/2016:这是我的生产实现。它有一些您可
问题内容: 我在一个div内放了一个嵌入式Flash电影,在主div上放了一个javascript onclick事件处理程序,但是没有捕捉到点击,这是怎么回事? 码: 问题答案: 最好将所有swf都视为z阶无穷大。Flash是最重要的,只有很少的事情可以阻止它。另一方面,如果您可以访问SWF本身的代码,或者可以使用另一个SWF加载当前的SWF,则可以使用几个不同的Flash命令来处理页面的Jav
问题内容: 我正在通过日历窗口小部件设置日期时间文本字段值。显然,日历小部件会执行以下操作: 我想要的是:在更改日期时间文本字段中的值时,我需要重置页面中的其他一些字段。我已经将一个onchange事件侦听器添加到了不会被触发的datetimetext字段中,因为我猜只有在元素获得焦点并且其值更改为失去焦点时才会被触发。 因此,我正在寻找一种手动触发此事件的方法(我认为应该注意检查文本字段中的值差