标签: javascript-events

`onclick`不适用于新添加的项目

我的代码的重要部分:

window.onload = function(){
    function someFunction(){
        [].forEach.call(
            document.querySelectorAll('.button'),
            function(btn){
                btn.onclick = console.log("I BEEN CLICKED!!");
            }
        );  
    }

    someFunction()

};
Run Code Online (Sandbox Code Playgroud)

someFunctionconsole.log版画'我点击了’每次当.button被点击,在加载时间存在.

我如何扩展它以适用于.button稍后使用纯JavaScript(无jQuery)添加的新附加元素?

javascript dom javascript-events

0
推荐指数
1
解决办法
118
查看次数

默认选中单选按钮

我有一个带有表单的html页面.它有两个标有Day Shift和Night Shift的单选按钮.我有一个JavaScript IF else语句,说明如果当前时间晚于7:00和19:00之前,则自动默认要检查日移按钮,否则请检查夜班按钮.

我不明白如何根据此声明检查单选按钮.我从单选按钮之前将值放入JavaScript变量,但不是相反.任何帮助都非常感谢.

HTML

<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8" content="HTML,CSS,XML,JavaScript">
      <script src="Scripts/autoRadio.js" type="text/javascript"></script>
      <link rel="stylesheet" type="text/css" href="Styles/Design.css">
   </head>
   <body>
      <form action="WasteEntry.asp" method="post">
         <fieldset>
            <input type="radio" required name="Shift" id="dayShift" value="Day Shift" >
            <input type="radio"  name="Shift" id="eveningShift" value="Evening Shift" >
         </fieldset>
      </form>
   </body>
</html>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

 var now = new Date().getHours();
if (now > 7 && now < 19) {
     document.getElementById('dayShift').checked = true;
} else {
     document.getElementById('eveningShift').checked = true;
}
Run Code Online (Sandbox Code Playgroud)

html javascript javascript-events

0
推荐指数
1
解决办法
139
查看次数

Javascript preventDefault无效

嗨,我只是练习一些JavaScript,我遇到了一个我无法解决的错误.我在我的html中有一个列表,其中每个项链接到一个页面,但我在我的js脚本中有一个函数,当我点击它应该从列表中删除项目的项目时,我正在尝试使用preventDefault()但它仍然需要我到那个链接.

<ul id="shoppingList">
        <li class="complete"><a href="google.com><em>fresh</em>tuna</a></li>
        <li class="complete"><a href="google.com">meatball</a></li>
        <li class="complete"><a href="google.com">kiwi</a></li>
        <li class="complete"><a href="google.com">chicken soup</a></li>
    </ul> 

function getTarget(e){
if(!e){
    e = window.event;
} 
return e.target || e.srcElement;}

function itemDone(e){
//Remove item from the list
var target;
var Parent;
var Grandparent;
target = getTarget(e);
Parent = target.parentNode;
Grandparent = target.parentNode.parentNode;
Grandparent.removeChild(Parent);

//Prevent the link from taking you somewhere
if(e.preventDefault){
    e.preventDefault();
}else{
    e.returnValue = false;
}
}

//Set up event listeners to call ItemDone() on click
var Shoppo = document.getElementById('shoppingList');
if(Shoppo.addEventListener){ …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery javascript-events

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

为什么我不能使用onclick事件执行这个简单的JavaScript函数?

我不是那样的JavaScript,我有以下问题.

进入JSP页面我有以下"链接":

<tr onmouseout="Javascript: this.style.background='#FFFFFF'; 
                            this.style.color='#003399';" 
                            onmouseover="Javascript: this.style.background='#003399'; 
                            this.style.color='#FFFFFF'; this.style.cursor='hand';" 
                            onclick="changeLocationTo('edi.do?serv=4.U');">

    <td style="border-top: 0px;">
        Tabella Anagrafica
    </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

因此,当用户单击tr元素时,将执行changeLocationTo() JavaScript函数向其传递String'edi.do?serv=4.U'.

在这个页面中,我已经定义了脚本部分:

<script language="JavaScript" src="js/Script.js">
    function changeLocationTo(newLocation) {

        alert("INTO changeLocationTo, nweLocation: " + newLocation);
        loadingPopUp();

        // you may add an timeout here or to handle a popup action like closing it

        document.location.href = newLocation;
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我点击前面的tr链接时,它不执行changeLocationTo()函数,每次点击tr时,进入FireBug控制台都显示此错误信息:

ReferenceError: changeLocationTo is not defined
Run Code Online (Sandbox Code Playgroud)

为什么?可能是什么问题呢?我该如何解决这个问题?我错过了什么?

TNX

html javascript xhtml onclick javascript-events

0
推荐指数
1
解决办法
57
查看次数

在$(this)中用class改变跨度的CSS

我有以下HTML结构:

<div class=module onclick="systemMenuRevealModule(this)"><span>Dashboard</span> 
    <div class=module_function><span>Performance</span></div>
    <div class=module_function><span>Alerts</span></div>
</div>
<div class=module onclick="systemMenuRevealModule(this)"><span>Favorites</span>
    <div class=module_function><span>Dashboard</span></div>
</div>
Run Code Online (Sandbox Code Playgroud)

脚本:

<script>
    function systemMenuRevealModule(el){
        $('.module_function span').css('display', 'none');
        $(this).find(".module_function span").css('display', 'block');


    }
</script>
Run Code Online (Sandbox Code Playgroud)

我试图只显示被点击的div内的跨度.这是菜单结构代码的一部分.我试图使这项工作没有ID,使代码更通用.我在控制台中没有看到任何错误,没有任何反应?

javascript jquery javascript-events

0
推荐指数
1
解决办法
55
查看次数

为什么我们在JS中使用$(function(){})语法?

当我使用此代码时,它将我的$ .post()绑定到一个表单,并阻止页面重新加载以提交它:

$("#analyze_audio").submit(function (e) {
    debugger;
    e.preventDefault();
    var url = "/analyze_audio";
    var dataToSend = {"analyze_audio": "analyze_audio"};
    var callback = function (data) {
        debugger;
        document.getElementById("audioresponse").innerHTML = (data);
    };
    $.post(url, dataToSend, callback, 'html');
});
Run Code Online (Sandbox Code Playgroud)

但它不会触发我在其中使用的调试器,因此它不会正确地将事件绑定到我的函数.但是,当我使用这个代码片段时,它完美无缺:

$(function() {
    $("#analyze_audio").submit(function (e) {
        debugger;
        e.preventDefault();
        var url = "/analyze_audio";
        var dataToSend = {"analyze_audio": "analyze_audio"};
        var callback = function (data) {
            debugger;
            document.getElementById("audioresponse").innerHTML = (data);
        };
        $.post(url, dataToSend, callback, 'html');
    });
});
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么?

javascript jquery event-handling javascript-events

0
推荐指数
1
解决办法
58
查看次数

如何检索在JavaScript中触发事件的html对象的引用?

我是JavaScript的新手,我有以下问题.进入JSP页面我有这样的事情:

    <tbody>
        <c:forEach items="${listaProgetti.lista}" var="progetto" varStatus="itemProgetto">
            <tr id='<c:out value="${progetto.prgPro}" />'>
                <td><input type="checkbox" class="checkbox" onchange="changeCheckbox()"></td>
                .....................................................
                .....................................................
                .....................................................
            </tr>
        </c:forEach>
    </tbody>
Run Code Online (Sandbox Code Playgroud)

所以你可以看到点击复选框它调用这个changeCheckbox()实际上是非常简单的:

function changeCheckbox() {
    alert("INTO changeCheckbox()");

    var checkedRowList = new Array();
}
Run Code Online (Sandbox Code Playgroud)

问题是,在这个函数中,我必须检索触发change事件的输入对象是什么(我认为这样的事情)

如何在以前的changeCheckbox()函数中获取对单击复选框的引用?

html javascript javascript-events

0
推荐指数
1
解决办法
46
查看次数

Twilio ip消息传递,如何退订频道

我已经使用Twilio IP消息传递示例作为起点编写了一个简单的聊天。这个想法是在各个客户和管理员之间建立私有渠道。每个客户将有一个单独的带有admin的专用频道。管理员可以选择打开/订阅与特定客户聊天的频道。

我现在面临的问题是我无法取消订阅以前订阅的频道。

这是以管理员,客户端(test1)和客户端(test2)登录的链接:http : //test.verbery.com/

重现此问题的步骤:

  1. 单击“管理员(admin1)”以管理员身份登录
  2. 在新打开的管理员聊天页面上,单击左侧面板上的“ test1@qwe.com”频道以订阅频道并接收该频道的消息。
  3. 在主页上单击“客户端(test1)”以客户端身份登录,并以客户端身份加入频道test1@qwe.com。
  4. 从管理员向客户端(test1)发送消息,从客户端(test1)向管理员发送消息。
  5. 在管理员聊天中,单击频道test2@qwe.com订阅此新频道并与另一个客户端(test2)聊天;以客户端(test2)身份登录并与管理员聊天。
  6. 现在的问题是:您仍在从test1@qwe.com接收消息-尝试以test1@qwe.com客户端发送消息。订阅test2@qwe.com频道时,您尚未退订test1@qwe.com

技术细节:要订阅频道,我使用了事件“ onMessageAdded”来监听该频道的传入消息:

// Listen for new messages sent to the channel
personalChannel.on('messageAdded', function(message) {
    printMessage(message.author, message.body);
});
Run Code Online (Sandbox Code Playgroud)

要取消订阅我尝试过的消息unbind('onMessageAdded')off('onMessageAdded')但是它不起作用,js控制台说:取消绑定(或关闭)不是功能。

有什么想法如何退订频道吗?

预先感谢,德米特里

javascript instant-messaging javascript-events twilio

0
推荐指数
2
解决办法
1079
查看次数

ReactJS中ContentEditable Div上的Interrupt Enter键

我想中断Enter key并停止将html代码注入ContentEditable div。我当前的代码不起作用,因为它不会中断Enter key。但是,如果我键入内容,请按Enter键,然后再次键入,它将删除内部html元素。但是,这不是我想要的。我希望元素在我按Enter时不进入ContentEditable div,而不必将其剥离。

我基本上是用这个作为input that scales with its content。如果有更好的方法可以进行此操作,请告诉我!

import ReactDOM from 'react-dom'

export default class MyInput extends React.Component {    
  componentWillReceiveProps(nextProps) {
    this.setState({value: nextProps.html});
  }

  shouldComponentUpdate(nextProps){
    return nextProps.html !== ReactDOM.findDOMNode(this).innerHTML;
  }

  componentDidUpdate() {
    if ( this.htmlEl && this.props.html !== this.htmlEl.innerHTML ) {
     this.htmlEl.innerHTML = this.props.html;
    }
  }

  emitChange(){
    var html = ReactDOM.findDOMNode(this).innerHTML;

    // regex to remove tags created after pressing enter
    value = value.replace(/<div>/g, '');
    value = value.replace(/<\/div>/g, '');
    value = value.replace(/<br>/g, …
Run Code Online (Sandbox Code Playgroud)

javascript javascript-events contenteditable reactjs

0
推荐指数
1
解决办法
1771
查看次数

当有人停止输入1秒钟时触发功能

我有一个输入字段,当有人开始输入时会生成自动建议.用户无需模糊或点击提交按钮即可显示建议.

当有人停止输入时,我想运行一个功能来跟踪向用户显示哪些产品,以及当前输入字段中的文本字符串.

我添加了一个'input'事件监听器,但我无法正确理解逻辑.

我想doStuff()如果它自上一次输入事件以来已经至少1秒钟.麻烦的是,当用户开始输入时,我的脚本正在触发,因为它基于"更改"事件监听器.

而且我认为必须有一种比我现在做的更合乎逻辑的方式.

另外我担心'输入'事件会影响用户浏览器,因为它在每次击键时运行,也许有更好的方法?

不情愿地在下面显示我的代码块,即使它没有多大意义并且是我较弱的脚本时刻之一,更多地表明我一直在尝试不同的事情.宁愿选择忽略我一直使用的疯狂逻辑的解决方案.

我希望doStuff(e)当用户"停止在输入中输入文本"时,这不是一个确切的定义.用户何时被认为已停止输入?现在我说1秒钟.

不想使用更改事件,因为它错过了许多用户不模糊的事件.

更喜欢纯JS.

  var input = document.querySelector('#search_input');
  var newinput;
  var lastinput;
  var diff;

        input.addEventListener('input', function(e) {

          newinput = new Date();
          if(!lastinput) {
            lastinput = new Date()
          }
          diff = newinput - lastinput;
          if(diff > 500 && diff < 2000) {
            doStuff(e)
          }

          lastinput = newinput;

        }, false);
Run Code Online (Sandbox Code Playgroud)

javascript javascript-events

0
推荐指数
1
解决办法
51
查看次数