我有一个脚本,我将元素附加到列表中.我需要在单击元素时调用函数,对于此函数,需要创建li时的变量值(它是li内容).
我已经检查了添加等解决方案newLi.onclick = function(){...}.
这个解决方案的问题是我没有在函数中获得正确的值,我得到列表中另一个元素的值.
现在这就是我创建元素的方式:
var ULlist = document.getElementById('ULid');
for(i=0;i<data.length;i++){
var Value = data[i] //function to get data
var newLi = document.createElement('li');
newLi.appendChild(elements.createTextNode(Value));
newLi.onclick = function(){alert(Value)} //not displaying the right value
ULlist.appendChild(newLi);
}
Run Code Online (Sandbox Code Playgroud)
所以问题是,有没有办法创建te onclick事件,为元素提供变量的正确值?
编辑:我添加了一部分代码.Li正在被创建,并且信息显示正确,唯一的问题是当试图创建它没有给出正确值的事件时,应该是在li
我无法让以下工作,我从Chrome的控制台获得的是Uncaught SyntaxError: Unexpected string.
我已经在声明中尝试tmp = event.keyCode和改变tmp,但我无法确定问题.ifevent.keyCode
function showSearching() {
alert ("Hello World");
}
$('#search').bind('keydown', function() {
tmp = Number(event.keyCode);
if ( ( tmp=<"48" && tmp=>"90" ) || ( tmp=<"96" && tmp=>"111" ) || ( tmp=<"186" && tmp=>"222" ) ) {
showSearching();
}
});Run Code Online (Sandbox Code Playgroud)
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<input id="search" type="text">Run Code Online (Sandbox Code Playgroud)
调用javascript代码有多少种方法?首先出现的是典型的<script>标签然后有一些标签的属性,onload=""为body标签,href="JavaScript:"的a标签,onSubmit="JavaScript:"的form标签,该onclick=属性.
除此之外,我知道在加载完所有代码之后也可以从javascript加载:在chrome控制台中包含javascript文件.
但我对从html文档运行代码的方式更感兴趣,是否有详尽的列表:事件,属性,......?
我有一个页面,其中的内容通过ajax引入.我遇到的问题是在加载内容后添加相关的事件侦听器.有没有办法告诉浏览器再次从头部运行所有脚本?
下面是一个从页面头部运行的代码的简单示例,显然任何与通过AJAX引入的".RRCustomizeBox .customize"匹配的新html元素都不会有以下click事件.
例如:
_vvdCMS.kklsRegions = {
init: function (){
$(document).ready(function(){
$('.RRCustomizeBox .customize').click( function(){
_vvdCMS.kklsRegions.showRRCustoms(this);
});
});
},
showRRCustoms: function(obj) {
var objParent = $(obj).parent();
objParent.find('.RRCustomizeBoxForm').fadeIn(700);
}
}
_vvdCMS.kklsRegions.init();
Run Code Online (Sandbox Code Playgroud)
谢谢你的提示,
约翰
我研究JavaScript代理模式,但我仍然没有,我可以从中受益.因此,我想向您提供两个例子,请您指出它们之间的区别.
请看下面的代码:
addEventListener电话有什么区别?其中一个人handleDrop定期打电话.另一个使用代理模式.我测试了两个函数,它们都handleDrop成功调用了.
DndUpload.prototype.buildDropZone = function ()
{
var self = this,
this.dropZone.addEventListener('drop', function (e) { self.handleDrop.call(self, e) }, false);
this.dropZone.addEventListener('drop', self.handleDrop, false);
DndUpload.prototype.handleDrop = function (e)
{
alert("test");
...
};
}
Run Code Online (Sandbox Code Playgroud)
您可以为我提供很好的参考,其中包含JavaScript中代理模式的非常清晰的解释.
提前致谢.
我有一个自定义对象,它实现了一个稍后会执行的函数.以下是有人称之为:
customObject.onSomething(function(e) {
// do something with e
console.log('foobar');
});
Run Code Online (Sandbox Code Playgroud)
以下是onSomething的创建方式:
var CustomObject = function() {
this.onSomething = function(callback) {
// If the user passes in parameter(s), how can I modify them before calling?
callback.apply(this);
}
}
Run Code Online (Sandbox Code Playgroud)
在执行应用或调用函数之前,如何修改用户传入的参数?
这段代码调用f()函数:
<p id="firstp">Hello!</p>
<script>
function f() {
doSomething();
};
document.getElementById("firstp").onmouseover = function() {
f();
};
</script>
Run Code Online (Sandbox Code Playgroud)
然而,如果我这样写它,它就会停止工作:
document.getElementById("firstp").onmouseover = f();
Run Code Online (Sandbox Code Playgroud)
当我直接调用函数时,为什么不设置事件处理程序?
我正在尝试做一个简单的警报('测试')应用程序,但事件没有被解雇,这是代码:
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// Cordova is loaded and it is now safe to make calls Cordova methods
//
function onDeviceReady() {
alert('omar');
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Hello World</title>
</head>
<body>
<div class="app">
<h1>AAAA</h1>
</div>
<script type="text/javascript" src="cordova-2.2.0.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
我想绑定一个启用事件change和按钮的函数keypress.有比这更好的方式:
$(':input').change(function () {
onInputChange();
}).keypress(function () {
onInputChange();
});
Run Code Online (Sandbox Code Playgroud)
谢谢.
我理解自定义事件如何在Backbone中工作以及如何触发它们,但我很难理解何时使用它们以及它们直接调用函数的目的是什么.
例如
var MyView = Backbone.View.extend({
tagName: 'div',
className: 'myview',
initialize: function() {
this.model.on("mycustomevent", this.doSomething, this);
},
doSomething: function() {
console.log('you triggered a custom event');
}
});
Run Code Online (Sandbox Code Playgroud)
如果我没有弄错,可以通过this.model.trigger("mycustomevent")在其他方法中使用来调用doSomething 方法,但也可以直接调用this.doSomething()
在视图之外,可以类似地调用它
var myview = new MyView({model:somemodel});
myview.model.trigger("customevent");
myview.doSomething();
Run Code Online (Sandbox Code Playgroud)
我很困惑的是为什么不放弃自定义事件,只需在需要时直接调用方法?任何示例用途将不胜感激!
javascript ×8
jquery ×3
ajax ×1
backbone.js ×1
callback ×1
cordova ×1
events ×1
html ×1
parameters ×1