相关疑难解决方法(0)

如何在addEventListener中使用参数传递给函数?

以传统的方式添加事件监听器:

function getComboA(sel) {
    var value = sel.options[sel.selectedIndex].value;  
}

<select id="comboA" onchange="getComboA(this)">
<option value="">Select combo</option>
<option value="Value1">Text1</option>
<option value="Value2">Text2</option>
<option value="Value3">Text3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

但我想适应addEventListener方式:

productLineSelect.addEventListener('change',getSelection(this),false);

function getSelection(sel){
    var value = sel.options[sel.selectedIndex].value;
    alert(value);
}
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为我不能将getSelection()中的任何参数作为addEventListener方法中的第二个参数传递?据我所知,我只能使用没有括号的函数名称.

任何的想法?

顺便说一下,请看看我之前关于console.log在safari 6.0开发人员检查器中不起作用的问题,我无法在控制台中编写任何输出,这令人沮丧.

html javascript javascript-events

53
推荐指数
3
解决办法
8万
查看次数

Javascript"addEventListener"事件在页面加载时触发

当我运行以下脚本时,事件总是在页面加载时触发.我不确定我在这里做错了什么,我创建了元素,在DOM中找到它然后附加一个监听器,但它总是在页面加载时触发事件而不是在单击元素时触发.

<script type="text/javascript" language="javascript">
    document.write("<div id=\"myDiv\">I am a div</div>");
    el = document.getElementById("myDiv");
    el.addEventListener("click", alert("clicktrack"), false);
</script>
Run Code Online (Sandbox Code Playgroud)

javascript javascript-events addeventlistener

12
推荐指数
1
解决办法
2万
查看次数

addEventListener 中不带括号的函数是如何使用的?

我无法理解这个addItem()removeItem()被不带括号addEventListener('click', addItem)

var addButton = document.getElementById('add');
addButton.addEventListener('click', addItem);

var removeButton = document.getElementById('remove');
removeButton.addEventListener('click', removeItem);

function addItem(){
    console.log('Add Button clicked');
}

function removeItem(){
    console.log('Remove Button clicked');
}
Run Code Online (Sandbox Code Playgroud)

html javascript function

10
推荐指数
1
解决办法
1219
查看次数

addEventListener("click",...)立即触发

我正在尝试创建一些适当放置的教学工具提示,用户点击这些工具提示以了解网站界面的工作原理.每个工具提示都有一个"下一个"链接,通过修改类(因此,css)来切换上一个和下一个工具提示的可见性.

这是一些应该这样做的简化代码:

function displayTooltip(t){
  //...some code to determine the tooltip IDs "next" and "previous"
  document.getElementById(previous).className = "tooltip invisibleTooltip";
  document.getElementById(next).className = "tooltip";
}

document.getElementById("tooltip-link1").addEventListener("click", displayTooltip(2));
Run Code Online (Sandbox Code Playgroud)

displayTooltip当我将此代码粘贴到控制台(或页面加载)时,立即调用(并正确切换类).如果我更换displayTooltipalert(),当我点击,如预期触发.我究竟做错了什么?

html javascript

7
推荐指数
2
解决办法
7569
查看次数

JavaScript addEventListener 函数语法

我无法理解为什么事件侦听器的函数参数不只接受该函数。这是代码:

变量声明:

var spanJS = document.getElementById("spanJS")
var txtPlayers = document.getElementById("ContentPlaceHolder1_txtPlayers")
var txtAmount = document.getElementById("ContentPlaceHolder1_txtAmount")
Run Code Online (Sandbox Code Playgroud)

然后关联事件监听器:

txtAmount.addEventListener("keyup", UpdateTotals())
txtPlayers.addEventListener("keyup", UpdateTotals())
Run Code Online (Sandbox Code Playgroud)

然后函数:

function UpdateTotals() {
      ... 
}
Run Code Online (Sandbox Code Playgroud)

这是整个代码。问题是,当我运行它时,它执行 UpdateTotals() 而没有任何 keyup 事件,并且侦听器不起作用。

如果我进行以下更改,它将按预期工作:

txtAmount.addEventListener("keyup", function () {
UpdateTotals()
})
txtPlayers.addEventListener("keyup", function () {
UpdateTotals()
})
Run Code Online (Sandbox Code Playgroud)

谁能解释一下为什么我不能只输入函数的名称,而必须将其“子化”到另一个函数中?

javascript syntax function addeventlistener

3
推荐指数
1
解决办法
363
查看次数