微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将参数传递给使用EventListener的Web套接字事件内动态表生成的OnClick事件

如何解决如何将参数传递给使用EventListener的Web套接字事件内动态表生成的OnClick事件

我已经在此站点上以及通过Internet进行搜索时看到了此问题,但觉得这种情况是独特的。我这里有几件事。首先是该页面接受Web套接字消息。接下来,我将使用onClick动态创建带有最后一个单元格的表。为了使事情更复杂,我试图将参数传递给onClick调用函数。如果我不传递任何参数,它将正常工作。当有人单击图像时,我想将原始JSON传递给我的函数。当然,这是行不通的。 Web浏览器控制台将evt和p1显示为未定义。即使,我为点击操作添加了EventListener。我的猜测是我在EventListener中错误地传递了参数,但是发生的事情太多了,我不确定是什么引起了问题。有谁知道为什么我的clickMessageOne函数没有被调用

window.addEventListener("load",init,false);
window.addEventListener("click",function (e) {clickMessageOne(e,p1)},false); // doesn't work
<script language="javascript" type="text/javascript">

    
    function init()
    {
        doConnect()
    }

    function doConnect()
    {
        websocket = new WebSocket("ws://192.168.1.198:8000/");
        websocket.onopen = function(evt) { onopen(evt) };
        websocket.onclose = function(evt) { onClose(evt) };
        websocket.onmessage = function(evt) { onMessage(evt) };
        websocket.onerror = function(evt) { onError(evt) };
    }

    function onopen(evt)
    {
        console.log("connected\n");
    }

    function onClose(evt)
    {
        console.log("disconnected\n");
    }

    function clickMessageOne(txt)
    {
        console.log("clickMessageOne");

        // txt should be original json
        console.log(txt);
    } 

    function onMessage(evt)
    {
        console.log("incomingJSON: " + evt.data + '\n');

        var recvObj = JSON.parse(evt.data);

        if (recvObj.code == "test")
        {
            var table = document.getElementById("incomingTable");
            var row = table.insertRow(1);

            // 7 columns
            var id = row.insertCell(0)
            var testOneCell = row.insertCell(1);
            var testTwoCell = row.insertCell(2);
            var testThreeCell = row.insertCell(3);
            var testFourCell = row.insertCell(4);
            var testFiveCell = row.insertCell(5);
            var testSixCell = row.insertCell(6);
            var testSevenCell = row.insertCell(7);
            var testEightCell = row.insertCell(8);

            id.innerHTML = ""
            testOneCell.innerHTML = "Incoming";
            testTwoCell.innerHTML = recvObj.number;
            testThreeCell.innerHTML = "";
            testFourCell.innerHTML = recvObj.time;
            testFiveCell.innerHTML = "";
            testSixCell.innerHTML = recvObj.textOne;
            testSevenCell.innerHTML = recvObj.textTwo;

            console.log(evt.data) // prints JSON correctly

            testEightCell.innerHTML = "<center><img src='test.png' onclick='clickMessageOne(evt.data)'></center>";
        } 
    }

    function onError(evt)
    {
        websocket.close();
    }

    window.addEventListener("load",false);
    window.addEventListener("click",false); // doesn't work

    function dodisconnect() {
        websocket.close();
    }

</script>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?