js中onclick传值问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中onclick传值问题相关的知识,希望对你有一定的参考价值。

<input type='button' name='goBackBtn' value='返回' onClick=\"javascript:goBackProd(\'"+all+"\');\" />在js中,要为新打开的页面添加个返回按钮,想在goBackProd方法中传多个值,为什么onClick=\"javaScript:goBackProd(\'"+all+"\',\'"+all2+"\');\"不行,应该怎么写?

onclick=" "
""在外面,不能再里面
\" 是转义 转义是在""里面才生效
一般在页面中的""里面的js代码,可以不用\" 直接用'就可以了

如果all 和 all2 是变量名
应该是onClick="goBackProd(all,all2)" 很简单 "" 里面就看成js语句

如果all 和all2 是字符数据值
应该是onClick="goBackProd('all','all2')" 也很简单 '在"" 里面就看成"
如果你一定要用"的话
就是onClick="goBackProd(\"all\",\"all2\")" 也很简单 \"在"" 里面就看成"
字符值和字符值相加不需要+号

只有和变量 相加采用+号
onclick外部可以认为没有变量的,所有的变量都是在js环境下的
所以根本没有需要写成
onClick="goBackProd("+all+")" 这样的形式
如果all是一个具体字符串值
也不需要onClick="goBackProd("+"\"all\")"形式,前面说了 在js中都是语句,直接连续书写不需要+号

总之不管是变量还是定值 都没有你那个形式

注:默认环境下, "javascript." 可以省略

对了
你说input是js中的,这是非不得已的方法
但是一定要用的话
你要把整个input进行编译转义
即原来是<input type='button' name='goBackBtn' value='返回'
onClick="goBackProd(all,all2)" />

现在要写成
1:all值在onclick时带入
"<input type='button' name='goBackBtn' value='返回'
onClick=\"goBackProd(all,all2)\" />"
就是说all不需要立即带入,执行点击的时候带入
2:all值现在就带入,以后点击它就执行现在all的参数
那么用"<input type='button' name='goBackBtn' value='返回'
onClick=\"goBackProd('"+all+",'"+all2+"') />"

推荐你用
var 某个input元素=document.createElement("input") 的方法创建 input元素
那么某个input元素.onclick=function(a1,a2)goBackProd(a1,a2) 就可以了
参考技术A

我在chrome浏览器上测试了这个字符串链接,没问题。


测试代码

function goBackProd(arg1, arg2) 
  alert(arg1);
  alert(arg2);

var all = 'all';
var all2 = 'all2';

var input = "<input type='button' name='goBackBtn' value='返回' onClick=\\"goBackProd(\\'"+all+"\\',\\'"+all2+"\\');\\" />";
document.body.innerhtml = input;


你的问题是点击之后没有反应吗?

本回答被提问者采纳
参考技术B onClick=\"javaScript:goBackProd(\'"+all+"\');\"
改成:onClick="javaScript:goBackProd(all);“
在使用javascript:声明时,其后面的文字会直接被当做代码解释执行的。追问

可是我的这个方法是在js文件里的,就是想通过js来控制这个button的显示,然后执行goBackProd方法

追答

测试文件,参数是可以传入的。

是不是处理参数的过程有问题


参考技术C 如果你这条代码是直接的html代码,而不是其他脚本输出这条代码的话
那你弄那么多反斜杠干什么?而且是乱用
例外,你在onclick事件中使用了+号连接符,目的是连接一些变量,是吧
那你的2个变量:all all2在哪里啊?哪里来的 啊?
就算你有这个2个js变量,也没必要加啊,除非你要用这个变量拼接其他的变量或者字符串,才+,你只是提供一个变量本身,你+他干什么?

<input type='button' name='goBackBtn' value='返回' onClick="var all = 100; goBackProd(all);" />
这样就可以啊追问

这个input是在js文件中的,不是html中的,all是我声明的参数,就是想通过js来让这个按钮显示出来,并且执行goBackProd()方法

参考技术D 你应该这么写:
<input type='button' name='goBackBtn' value='返回' onClick="goBackFunc()"/>

function goBackFunc()
goBackProd(all,all2);

js中onclick定义问题

传统的写法是直接在标签中 比如div a li ul等中直接写onclick='函数();' 这么写,但是我见过那种不在这个位置写的,但是我不知道是在什么地方实现这个事件的定义,在js代码中能实现对这个事件的定义吗?
传统写法如:<div class="a1" id="b1" onmousemove="show(1);">选项卡一</div>
这是一个事件吧,onmousemove(); 如果我的选项卡很多,那么在html代码中每个都去写这个事件感觉 一来是难看,而来貌似也不怎么方便,
问题的重点是 :<div class="a1" id="b1" >选项卡一</div> 只写这一串html 其他的都在js中去实现这个div的onmousemove怎么实现呢?

参考技术A document.onload()的时候
将你要赋值的函数赋到相应的dom上去。

举个例子
fuction myclick

函数块



getelementbyid("a1").onclick = myclick;
参考技术B div的是吧
var d = document.getElementsByTagName('div');
for(var i in d)
d[i].onmousemove = function()
    // TODO
;

追问

能行吗? 而且主要的代码部分还跟这个i有关呀,我循环之后只能执行最后面一个i的方法

以上是关于js中onclick传值问题的主要内容,如果未能解决你的问题,请参考以下文章

js拼接html如何让onclick生效

jsp页面中onclick怎么传参到js中

JS onclick 中如何传两个参数给 JS方法

js如何阻止onclick点击事件响应两次

js中onclick定义问题

php YII框架 js里如何通过onclick 传值