JS (javascript)中getID后,onclick触发事件无效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS (javascript)中getID后,onclick触发事件无效相关的知识,希望对你有一定的参考价值。

代码很简单:
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" >
<script type="text/javascript">
var a=document.getElementById('button')

a.onclick=function()
alert("123");


</script>
</head>
<input type="button" id="button" value="点我">

如果我用行内式JS 在input中直接添加onclick="xx()" 就可以正常触发函数,但是我换这种写法后就触发不了了,点击没反应!请会的人普及下知识,我这哪错了

把script脚本移到input后面就行了。像下面这样:
<input type="button" id="button" value="点我">
<script type="text/javascript">
var a=document.getElementById('button')

a.onclick=function()
alert("123");


</script>追问

JS肯定要写在head里面啊,问题不在这吧,而且我按你说的放到后面也根本无效啊,JS不就是写在head或body里面么,一般都是head

追答

因为你的代码中,页面先加载的script,后加载的input
当页面加载,运行到script时,因为你的input还没画出来,就会出现找不到的错误
但如果使用了"onclick=xx()"、或者window.onload、或者把Script写到后面
就可以让script找到你的input元素
如果写到head里,一般都是加上
window.onload=function()你的JS代码;
或者
jQuery(function()你的JS代码);
或者
直接写你的JS代码,然后等待事件调用。

参考技术A <!DOCTYPE HTML>
<html>
<head>
<meta charset=UTF-8>
<title>YuGiOh</title>
<style type="text/css">
</style>
<script type="text/javascript">
onload = function ()
    
    var a = document.getElementById ('button')
    a.onclick = function ()
    
    alert ("123");
    
    
</script>
</head>
<body>
<input type="button" id="button" value="点我">
</body>
</html>

本回答被提问者采纳

unigui结合JS方法记录

在js中界面上所有组件都当成html里来控制

1、控制按钮事件

 document.getElementById(MainForm.UniButton4.getId()).click();

这个方法让JS与UNI交互提供太大的帮助了

js code如下

document.getElementById(MainForm.UniButton4.getId()).click(); //模拟按钮事件

extjs code如下

MainForm.UniButton4.fireEvent("click", MainForm.UniButton4); //模拟按钮事件

在delphi里

UniSession.AddJS(MainForm.UniButton4.fireEvent("click", MainForm.UniButton4););

2、给edit赋值

MainForm.opction_edit.setValue("1");

3.客户端摄像头调用

http://www.oschina.net/p/flash-avatar-upload 

4.编码问题

编码的问题,以前我碰到过类似的就这么解决的,任何工具都可以,但只要能改变编码就行
5.JS用多以后会出现些异常情况,引用没效,于是在主界面加一个UniHTMLFrame,将<script type="text/javascript" src="Dialog.js"></script>放入HTML中解决问题。

6.  str:=function zOpenD(){+
  var diag = new Dialog("Diag1");+
  diag.Width = +width+;+
  diag.Height = +height+; +
  diag.ShowButtonRow=false;+
  diag.Title =  "+title+";  + urlhtml+
  diag.ShowMessageRow = +ShowMessageRow+;+
 diag.MessageTitle = "+MessageTitle+";+
 diag.Message = "+sm+";+
 diag.OKEvent = function(){};//点击确定后调用的方法  +
 diag.show();}  +
 zOpenD();;
  UniSession.AddJS(str);

这样会出错,不要把注释放到里头

7.jquery.min.js与其他js脚本的冲突


那是因为你的JS代码有 $ 符号,跟JQ冲突。解决办法可以在JQ代码前加入
var jq=jQuery.noConflict(); 然后将JQ代码中的$都换成jq就行。如例:

<script type="text/javascript">
var jq=jQuery.noConflict(); 
jq(function(){alert ("That‘s Good");})
</script>
--------------------- 
作者:yeeonefx 
来源:CSDN 
原文:https://blog.csdn.net/yeeonefx/article/details/8557600 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

以上是关于JS (javascript)中getID后,onclick触发事件无效的主要内容,如果未能解决你的问题,请参考以下文章

Inappbrowser 未加载

ruby on rails 6 - 在javascript中动态引用图像

Ruby on Rails 4 javascript未执行

复习 - JavaScript - 阶段02

unigui结合JS方法记录

Bootstrap (5) Javascript 在 package.json 修订后不起作用 (Ruby on Rails 6)