innerHTML 中添加onclick方法 不管用

花儿谢了后 2015-09-30 11:45:26
     div.style.height = "200px";
div.style.cursor = "pointer";
div.style.border = "1px solid gray";
div.style.backgroundColor = "white";
div.style.margin = "auto";
div.id = "divTablePole";
var stringBreakDownPole = "<table class='table'><tr><th>箱名称</th><th>杆编号</th></tr>";
for (var i = 0; i < data.length; i++)
{
if (largenelat > data[i].XLat && smallswlat < data[i].XLat && data[i].YLong < largenelng && data[i].YLong > smallswlng)
{

if (!mgr)
mgr = new BMapLib.MarkerManager(window.bmap, {});
var point = new BMap.Point(data[i].YLong, data[i].XLat);
var marker = BmapUtils.marker.addWithIcon(data[i].YLong, data[i].XLat, data[i].Ico, size);
marker.setTitle(data[i].Title);
setMarkerMetadata(marker, data[i]);
arraypoint.push(marker);

stringBreakDownPole += "<tr class='info' name=" + data[i].Title + " onclick='clickMarkerLocation("+data[i].Title+")'><td>" + data[i].CabName + "</td><td>" + data[i].Title + "</td></tr>";


if (window.bmap.getZoom() == zoom)
{
BmapUtils.marker.focused(marker, zoom);
setSimInfoWindows(marker, zoom);
}
a++;
}
}

stringBreakDownPole += "</table><input style='float:left;margin:0px;' value='故障灯有"+a+"个' class='btn btn-warning' type='button'></input><input style='float:right;margin:0px;' value='关闭' class='btn btn-danger' type='button' onclick='$(\"#close\").click()'></button>";
div.innerHTML=stringBreakDownPole;
div.style.overflowY = "scroll";
...全文
619 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_25640661 2015-10-09
  • 打赏
  • 举报
回复
有时候一个空格也是问题的所在,检查检查。
紫魂一号 2015-10-08
  • 打赏
  • 举报
回复
把你整个动态添加的语句打印出来瞧瞧,或者复制到其他页看看有没有报错
花儿谢了后 2015-10-08
  • 打赏
  • 举报
回复
引用 5 楼 starfd 的回复:
onclick='clickMarkerLocation(\""+data[i].Title+"\")'
而且你的title肯定是字符串,js的话那你必须用引号包含
f12 显示这样onclick="clickMarkerLocation("Test102")"
花儿谢了后 2015-10-08
  • 打赏
  • 举报
回复
引用 9 楼 starfd 的回复:
请看5楼,试下加双引号
shi试了 不行
  • 打赏
  • 举报
回复
" onclick='clickMarkerLocation("+data[i].Title+")'><td>" 改为 " onclick='clickMarkerLocation(‘"+data[i].Title+"’)'><td>"
花儿谢了后 2015-10-08
  • 打赏
  • 举报
回复
引用 13 楼 zifengshen1981 的回复:
把你整个动态添加的语句打印出来瞧瞧,或者复制到其他页看看有没有报错
引用 8 楼 hanjun0612 的回复:
我个人觉得,是由于你后台生成的次click事件,所以导致没有绑定。 不知道你了解 jquery的 live和 bind 的区别吗 live就是针对你这种,生成的 html,其中包含事件的。可js加载时又没有绑定的情况。 我觉得你可以把td标签的 onclick抽出来,给需要增加事件的 td标签,都记录一个 统一的 空class属性 前台 通过jquery实现 比如 <td class='MarkerLocation'></td> $('.MarkerLocation').live('click',function(){ clickMarkerLocation(); })
多谢 先前也这样试过!没成功 看到你这样一说我又试了下 先前是方法调用了参数没传好 现在用live解决了!多谢了
花儿谢了后 2015-10-08
  • 打赏
  • 举报
回复
引用 10 楼 tcmakebest 的回复:
这些代码只是后台制作流程, 大家要看的是得出的结果, 因为这些到达浏览器时,就是另一种流程了.
引用 14 楼 starfd 的回复:
那你改成
stringBreakDownPole += "<tr class='info' name=" + data[i].Title + " onclick=\"clickMarkerLocation('"+data[i].Title+"')\"><td>" + data[i].CabName + "</td><td>" + data[i].Title + "</td></tr>";
这个也试过了不行 用了那个live方法给解决了 先前 以为不行 也是参数问题没传好 方法可以调用 谢谢版主了
  • 打赏
  • 举报
回复
那你改成
stringBreakDownPole += "<tr class='info' name=" + data[i].Title + " onclick=\"clickMarkerLocation('"+data[i].Title+"')\"><td>" + data[i].CabName + "</td><td>" + data[i].Title + "</td></tr>";
tcmakebest 2015-10-04
  • 打赏
  • 举报
回复
这些代码只是后台制作流程, 大家要看的是得出的结果, 因为这些到达浏览器时,就是另一种流程了.
  • 打赏
  • 举报
回复
onclick='clickMarkerLocation(\""+data[i].Title+"\")'
而且你的title肯定是字符串,js的话那你必须用引号包含
  • 打赏
  • 举报
回复
你的onclick是要调用前端js的方法,还是后台net的方法?
拜一刀 2015-09-30
  • 打赏
  • 举报
回复
你看看实际页面的控件有这个属性没 话说我没用过单引号呢
ajianchina 2015-09-30
  • 打赏
  • 举报
回复
仅这一句cs代码没问题,你检查一下js函数是不是有问题,你alert一下看看能否弹出来呢。
花儿谢了后 2015-09-30
  • 打赏
  • 举报
回复
 stringBreakDownPole += "<tr class='info' name=" + data[i].Title + " onclick='clickMarkerLocation("+data[i].Title+")'><td>" + data[i].CabName + "</td><td>" + data[i].Title + "</td></tr>";
就是这一句 这个方法为什么不管用 方法在这里
    var clickMarkerLocation=function (e) {
        zoom = 18;
        for (var i = 0; i < arraypoint.length; i++) {
            if (arraypoint[i]._config.title == e) {
                BmapUtils.marker.focused(arraypoint[i], zoom);
                setSimInfoWindows(arraypoint[i], zoom);
            }
        }
    }
  • 打赏
  • 举报
回复
请看5楼,试下加双引号
正怒月神 版主 2015-09-30
  • 打赏
  • 举报
回复
我个人觉得,是由于你后台生成的次click事件,所以导致没有绑定。 不知道你了解 jquery的 live和 bind 的区别吗 live就是针对你这种,生成的 html,其中包含事件的。可js加载时又没有绑定的情况。 我觉得你可以把td标签的 onclick抽出来,给需要增加事件的 td标签,都记录一个 统一的 空class属性 前台 通过jquery实现 比如 <td class='MarkerLocation'></td> $('.MarkerLocation').live('click',function(){ clickMarkerLocation(); })
花儿谢了后 2015-09-30
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
你的onclick是要调用前端js的方法,还是后台net的方法?
前端的 function
花儿谢了后 2015-09-30
  • 打赏
  • 举报
回复
引用 2 楼 ajianchina 的回复:
仅这一句cs代码没问题,你检查一下js函数是不是有问题,你alert一下看看能否弹出来呢。
js函数是没有问题的

62,042

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧