在onclick函数中传递string参数
我想传递一个参数(即一个string)到一个Onclick函数。 目前,我这样做:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
与result.name例如等于string“添加”。 当我点击这个button,我有一个错误,说没有定义添加。 由于这个函数调用完美的数字参数,我假设它与string中的符号“”有关。 有没有人有过这个问题?
这看起来像你从string构buildDOM元素。 你只需要在result.name中添加一些引号:
'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'
尽pipe如此,你应该用适当的DOM方法来做到这一点。
var inputElement = document.createElement('input'); inputElement.type = "button" inputElement.addEventListener('click', function(){ gotoNode(result.name); }); document.body.appendChild(inputElement);
只要知道,如果这是一个循环或者什么的, result
会在事件触发前发生变化,你需要创build一个额外的范围气泡来遮蔽变化的variables。
我build议不要使用HTML onclick
处理程序,并使用更常见的东西,如document.getElementById
。
HTML:
<input type="button" id="nodeGoto" />
JavaScript的:
document.getElementById("nodeGoto").addEventListener("click", function() { gotoNode(result.name); }, false);
我猜测,你正在使用JavaScript本身创build一个button。 所以,你的代码中的错误是,它会以这种forms呈现
<input type="button" onClick="gotoNode(add)" />'
在这个当前状态下, add
会被认为是variables或函数调用的标识符。 你应该逃避这样的价值
'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'
这是发送价值或对象的一种不错的方式。
<!DOCTYPE html> <html> <body> <h1 onclick="test('wow',this)">Click on this text!</h1> <script> var test =function(value,object){ object.innerHTML=value; }; </script> </body> </html>
对于我在onClick中使用string转义方面的担心以及随着参数数目的增长,维护起来会变得很麻烦。
下面的方法将有一个单跳 – 单击 – 将控件带到一个处理程序方法和处理程序方法,根据事件对象,可以扣除点击事件和相应的对象。
它还提供了一个更清晰的方式来添加更多的参数和更多的灵活性。
<button type="button" className="btn btn-default" onClick="invoke" name='gotoNode' data-arg1='1234'>GotoNode</button>
在javascript层上:
invoke = (event) => { let nameOfFunction = this[event.target.name]); let arg1 = event.target.getAttribute('data-arg1')); //We can add more args as needed... window[nameOfFunction](arg1) //hope function is in window. //Else the respective object need to be used }) }
这样做的好处是我们可以根据需要拥有尽可能多的参数(在上面的例子中,data-arg1,data-arg2 ….)。
已编辑:如果需要在您的HTML代码中引用全局对象(js),则可以尝试此操作。 [不要在variables周围使用任何引号('或')]
小提琴参考。
使用Javascript:
var result = {name: 'hello'}; function gotoNode(name) { alert(name); }
HTML:
<input value="Hello" type="button" onClick="gotoNode(result.name)" />
多个参数:
bounds.extend(marker.position); bindInfoWindow(marker, map, infowindow, '<b>' + response[i].driver_name + '</b><br>' + '<b>' +moment(response[i].updated_at).fromNow() + '</b> <button onclick="myFunction(\''+response[i].id+'\',\''+driversList+'\')">Click me</button>' );
尝试这个..
HTML:
<button id="a1" type="button" onclick="return a1_onclick('a1')">a1</button>
JavaScript的:
<script language="javascript" type="text/javascript"> function a1_onclick(id) { document.getElementById(id).style.backgroundColor = "#F00"; } </script>
注意: 一定要在html代码中的('a1')之类的符号之间发送参数
你也在string中使用重音符号(`)
尝试:
`<input type="button" onClick="gotoNode('${result.name}')" />`
有关更多信息,请访问MDN和Stackoverflow
通过Chrome,Edge,Firefox(Gecko),Opera,Safari支持,但不支持Internet Explorer。
你可以传递引用或string值,只需将函数放在快照下面的doube逗号“”中
为了传递多个参数,你可以通过连接string来转换string,就像单引号一样,我们可以使用'
var str= "'"+ str+ "'";
为了传递多个参数,你可以通过将string与ASCII值连接来转换string。对于单引号,我们可以使用'
var str= "'"+ str+ "'";
您可以将相同的parameter passing给onclick()
事件。在大多数情况下,它适用于每个浏览器。
<style type="text/css"> #userprofile{ display: inline-block; padding: 15px 25px; font-size: 24px; cursor: pointer; text-align: center; text-decoration: none; outline: none; color: #fff; background-color: #4CAF50; //#c32836 border: none; border-radius: 15px; box-shadow: 0 9px #999; width: 200px; margin-bottom: 15px; } #userprofile:hover { background-color: #3e8e41 } #userprofile:active { background-color: #3e8e41; box-shadow: 0 5px #666; transform: translateY(4px); } #array { border-radius: 15px 50px; background: #4a21ad; padding: 20px; width: 200px; height: 900px; overflow-y: auto; } </style> if(data[i].socketid!=""){ $("#array").append("<button type='button' id='userprofile' class='green_button' name="+data[i]._id+" onClick='chatopen(name)'>"+data[i].username+"</button></br>"); }else{ console.log('null socketid >>', $("#userprofile").css('background-color')); //$("#userprofile").css('background-color','#c32836 ! important'); $("#array").append("<button type='button' id='userprofile' class='red_button' name="+data[i]._id+" onClick='chatopen(name)'>"+data[i].username+"</button></br>"); $(".red_button").css('background-color','#c32836'); }