Я хочу передать параметр (т. е. строку) в функцию onclick. На данный момент, я делаю это:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
с результатом.имя примере равна строке на "Добавить" и. Когда я нажимаю на эту кнопку, у меня есть сообщение об ошибке, которое говорит, что добавить не определен. С этой functioncall отлично работает с числовой параметр, я предполагаю, что это как-то связано с символикой " и" в строку. Кто-нибудь имел эту проблему раньше?
Похоже, что вы're здания DOM-элементов из строк. Вам просто нужно добавить некоторые цитаты по результату.имя:
'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'
Вы действительно должны делать это хоть с правильными методами дом.
var inputElement = document.createElement('input');
inputElement.type = "button"
inputElement.addEventListener('click', function(){
gotoNode(result.name);
});
document.body.appendChild(inputElement);
Только учтите, что если это петля или что-то, результат
изменится до события и вы'd нужен для создания дополнительного пузырь объем теневой изменяющейся переменной.
Пару вопросов для меня в отношении к использованию строки бежать в onclick и как количество аргументов вырастет, он станет неудобны в обслуживании.
Следующий подход будет одним прыжком - на кнопку - взять управление на обработчик и обработчик метода, основанного на объект события, могут вычесть событие click и соответствующего объекта.
Она также обеспечивает более чистый способ, чтобы добавить больше аргументов и имеют большую гибкость.
<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
})
}
Преимущество здесь заключается в том, что мы можем иметь столько аргументов (в приведенном выше примере, данные арг1, данных аргумент2....) по мере необходимости.
Я предлагаю даже не используя обработчики в HTML щелчку
, и использовать что-то более распространенные, такие как документ.метода getElementById
.
HTML-код:
<input type="button" id="nodeGoto" />
На JavaScript:
document.getElementById("nodeGoto").addEventListener("click", function() {
gotoNode(result.name);
}, false);
Я предполагаю, вы создаете кнопку, используя самом JavaScript. Таким образом, **** ошибки в вашем коде заключается в том, что она будет оказывать на эту форму
<input type="button" onClick="gotoNode(add)" />'
В нынешнем состоянии, "добавить", будет рассматриваться как идентификатор, как переменные или вызовы функций. Вы должны убежать от стоимости такой
'<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>
Попробуйте Это..
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>
Примечание: убедитесь, отправки аргументы между ' ' знаки ('А1') в HTML-код
Несколько Параметров :
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>'
);
также можно использовать глубокую ударение ( ` ) в строке
попробуйте :
`<input type="button" onClick="gotoNode('${result.name}')" />`
для получения дополнительной информации посетите МДН и сайте StackOverflow
На Chrome,край,в Firefox (движок Gecko),Opera,сафари поддерживает,но не поддерживает Интернет Эксплорер.
Отредактированы: Если требование будет ссылаться на глобальный объект (JS) в ваш HTML-код, вы можете попробовать это. [Дон'т использовать любые кавычки (' или ") по переменной]
[Для мандолины][1] Ссылка.
На JavaScript:
var result = {name: 'hello'};
function gotoNode(name) {
alert(name);
}
HTML-код:
<input value="Hello" type="button" onClick="gotoNode(result.name)" />
если кнопка создается динамически:
Вы можете передать параметры строки в JavaScript функции, как показано ниже код:
Я прошел 3 параметров, где третий параметр строки надеюсь, что это помогает.
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);
}
Вот решение на jQuery, что я'м, используя.
В 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>
Вы можете сдать справочные или строковое значение функция просто положить внутрь двуспальная запятые " и на" АСП снимок ниже
Если вы находитесь кнопку добавления или динамически ссылке и разрешить проблему, то это может помочь. Я решил по этому пути.
var link= $(contentData1[i]).find("td:first font b a").attr("href",'javascript:onClick=openWin(\'' + tdText + '\')');
Я новичок в HTML, jQuery и с JS. Так что может быть мой код не оптимизирован или синтаксис, но это работает для меня.
Для передачи нескольких параметров можно привести строку, связывая его со значением ASCII, как, на одинарные кавычки мы можем использовать '
var str= "'"+ str+ "'";
этот же параметр можно передать событие функция onclick ()
.В большинстве случаев он работает с каждым браузером.
если использовать для генерации набор кнопок с разными параметрами обработчиков. 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
}
}
если мы это сделаем:
some_button.onclick = foo( some_param );
function foo( param ){
alert( param );
}
затем функция Foo запустить после каждого обновления страницы.
если мы это сделаем:
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);
}
затем для всех кнопок, созданных в цикл, последнее значение параметра "в результате.именем"
если вы используете АСП вы можете использовать JavaScript:
HTML-код:
<input type='button' value='test' onclick='javascript: EditSelectedOptionName(x,y)' />"
Код
function EditSelectedOptionName(id, name) {
console.log(id);
console.log(name);
}
Вы можете использовать этот код в JavaScript-файл, чтобы добавить кнопку:
<button class="btn btn-danger" onclick="cancelEmployee(\''+cancelButtonID+'\')" > Cancel </button>
в
Следующие работы для меня очень хорошо,
<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');
}