Aș dori să treacă un parametru (de exemplu, un șir de caractere) pentru o Onclick funcție. Pentru moment, am face acest lucru:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
cu rezultatul.nume de exemplu, cu string "Adăugați". Când m-am faceți clic pe acest buton, am o eroare care spune că a Adăuga nu este definit. Din acest functioncall funcționează perfect, cu un parametru numeric, presupun că are ceva de-a face cu simbolurile "" în șir. Cineva a avut aceasta problema pana acum?
Se pare ca tu're clădirea DOM elemente de siruri de caractere. Ai nevoie doar pentru a adăuga unele citate în jurul valorii de rezultat.nume:
'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'
Ar trebui să faci asta cu buna DOM metode, deși.
var inputElement = document.createElement('input');
inputElement.type = "button"
inputElement.addEventListener('click', function(){
gotoNode(result.name);
});
document.body.appendChild(inputElement);
Doar să fie conștienți că, dacă aceasta este o buclă sau ceva de genul, "rezultat" se va schimba înainte de eveniment incendii și te'd nevoie pentru a crea o suplimentare de aplicare bule la umbra de schimbare de variabilă.
Câteva nelămuriri cu privire la utilizarea șir de evacuare în onClick și ca număr de argumente crește, va deveni greoaie pentru a menține.
Următoarea abordare va avea un singur hop - On click - ia de control de la o metodă de tratare și metodă de tratare, bazat pe obiect eveniment, pot deduce faceți clic pe eveniment și corespunzătoare a obiectului.
Acesta oferă, de asemenea, un mod curat de a adăuga mai multe argumente și mai multă flexibilitate.
<button type="button"
className="btn btn-default"
onClick="invoke"
name='gotoNode'
data-arg1='1234'>GotoNode</button>
Pe javascript layer:
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
})
}
Avantajul aici este că putem avea cât mai multe argumente (în exemplul de mai sus, date-arg1, date-arg2....) după cum este necesar.
Nu sugerez chiar folosind HTML "onclick" stivuitoare, și de a folosi ceva mai comune, cum ar fi document.getElementById
.
HTML:
<input type="button" id="nodeGoto" />
JavaScript:
document.getElementById("nodeGoto").addEventListener("click", function() {
gotoNode(result.name);
}, false);
Bănuiesc că sunteți crearea unui buton, folosind JavaScript în sine. Deci, **** eroare din codul este asta, se va face în această formă
<input type="button" onClick="gotoNode(add)" />'
La această stare actuală, " add " va fi considerat ca un element de identificare, cum ar fi variabile sau apeluri de funcții. Tu ar trebui să scape de valoare astfel de prognoze
'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'
Acesta este un frumos și elegant mod de a trimite o valoare sau un obiect.
<!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>
Încercați Acest Lucru..
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>
Notă: să fie sigur de a trimite argumente între ' ' semne ca ('a1'), în cod html
Mai Multe Parametru :
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>'
);
de asemenea, utilizați accent grav simbol ( ` ) în șir
încercați :
`<input type="button" onClick="gotoNode('${result.name}')" />`
pentru mai multe informații vizitați MDN și Stackoverflow
De Chrome,Edge,Firefox (Gecko),Opera,Safari sprijin,dar nu suport Internet Explorer.
Editat: Dacă cerința este de a face referire la obiect global (js) în cod HTML, puteți încerca acest lucru. [Don't de a folosi orice citate (' sau ") în jurul variabilă]
[Vioara][1] referință.
Javascript:
var result = {name: 'hello'};
function gotoNode(name) {
alert(name);
}
HTML:
<input value="Hello" type="button" onClick="gotoNode(result.name)" />
dacă butonul este generat dinamic:
Puteți trece parametrii șirului de funcții javascript astfel de cod de mai jos:
Am trecut de 3 parametri în cazul în care al treilea este un parametru șir sper că acest lucru vă ajută.
var btn ="<input type='button' onclick='RoomIsReadyFunc("+ID+","+RefId+",\""+YourString+"\");' value='Room is Ready' />";
//your javascript function
function RoomIsReadyFunc(ID, RefId, YourString)
{
alert(ID);
alert(RefId);
alert(YourString);
}
Aici este un Jquery soluție ce am'm a utiliza.
Jquery
$("#slideshow button").click(function(){
var val = $(this).val();
console.log(val);
});
HTML
<div id="slideshow">
<img src="image1.jpg">
<button class="left" value="back">❮</button>
<button class="right" value="next">❯</button>
</div>
Dacă adăugați buton sau link-ul dinamic și se confruntă cu problema atunci acest lucru poate fi de ajutor. Am rezolvat prin acest mod.
var link= $(contentData1[i]).find("td:first font b a").attr("href",'javascript:onClick=openWin(\'' + tdText + '\')');
Sunt nou HTML, JQuery și JS. Deci poate fi codul meu nu va fi optimizat sau de sintaxă, dar nu a fost de lucru pentru mine.
Pentru a trece de mai mulți parametri, puteți arunca șir prin concatenarea cu valoare ASCII ca, pentru un singur citate putem folosi '
var str= "'"+ str+ "'";
același parametru, puteți trece la onclick()
eveniment.În cele mai multe cazuri acesta funcționează cu orice browser.
dacă pentru a utiliza pentru generarea unui set de butoane cu diferite parametri de stivuitoare. https://www.w3schools.com/js/js_function_closures.asp
let some_button = document.createElement( "button" );
some_button.type = "button";
some_button.onclick = doWithParam( some_param );
function doWithParam( param ){
return function(){
alert( param );//<------Your code here
}
}
dacă facem:
some_button.onclick = foo( some_param );
function foo( param ){
alert( param );
}
atunci funcția de foo începe după fiecare actualizare a paginii.
dacă facem:
for( let i = 0; i < 10; ++i ){
var inputElement = document.createElement('input');
inputElement.type = "button"
inputElement.addEventListener('click', function(){
gotoNode(result.name);
});
document.body.appendChild(inputElement);
}
apoi pentru toate butoanele create în buclă, ultima valoare a parametrului "rezultat.numele"
dacă sunteți folosind asp puteți utiliza javascript:
HTML:
<input type='button' value='test' onclick='javascript: EditSelectedOptionName(x,y)' />"
Javascript:
function EditSelectedOptionName(id, name) {
console.log(id);
console.log(name);
}
Următoarele lucrări pentru mine foarte bine,
<html>
<head>
<title>HTML Form</title>
</head>
<body>
<form>
<input type="button" value="ON" onclick="msg('ON')">
<input type="button" value="OFF" onclick="msg('OFF')">
</form>
<script>
function msg(x){
alert(x);
}
</script>
</body>
</html>
<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');
}