Eu gostaria de passar um parâmetro (isto é, uma string) para uma função Onclick. Por enquanto, faço isso:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
com result.name, por exemplo, igual à sequência "Adicionar". Quando clico nesse botão, ocorre um erro informando que Adicionar não está definido. Como essa função chamada funciona perfeitamente com um parâmetro numérico, suponho que tenha algo a ver com os símbolos "" na string. Alguém já teve esse problema antes?
javascript
html
JasperTack
fonte
fonte
Respostas:
Parece que você está criando elementos DOM a partir de strings. Você só precisa adicionar algumas aspas em torno de result.name:
Você realmente deveria estar fazendo isso com métodos DOM adequados.
Esteja ciente de que, se for um loop ou algo assim,
result
será alterado antes do evento ser disparado e você precisará criar um balão de escopo adicional para ocultar a variável em mudança.fonte
Algumas preocupações para mim com relação ao uso de escape de string no onClick e à medida que o número de argumentos aumenta, fica difícil manter isso.
A abordagem a seguir terá um salto - Ao clicar - leve o controle para um método manipulador, e o método manipulador, com base no objeto de evento, pode deduzir o evento click e o objeto correspondente.
Ele também fornece uma maneira mais limpa de adicionar mais argumentos e ter mais flexibilidade.
Na camada javascript:
A vantagem aqui é que podemos ter tantos argumentos (no exemplo acima, data-arg1, data-arg2 ....) quanto necessário.
fonte
invoke
não é chamado quando você clica no botãoJSON.stringify(obj)
no HTML eJSON.parse(event.target.getAttribute('data-arg'))
no JavaScript-layerSugiro nem usar
onclick
manipuladores de HTML e usar algo mais comum, comodocument.getElementById
.HTML:
JavaScript:
fonte
onclick
não é uma função, é uma propriedade à qual você deve atribuir uma função:....onclick = function() {...};
Acho que você está criando um botão usando o próprio JavaScript. Portanto, o erro no seu código é que ele será renderizado neste formulário
Nesse estado atual,
add
será considerado um identificador como variáveis ou chamadas de função. Você deve escapar do valor como estefonte
Essa é uma maneira agradável e interessante de enviar valor ou objeto.
fonte
Tente isso ..
HTML:
JavaScript:
Nota: certifique-se de enviar argumentos entre sinais '' como ('a1') no código html
fonte
você também usa o símbolo de acento grave (`) na string
experimentar :
para mais informações, visite MDN e Stackoverflow
Pelo Chrome, Edge, Firefox (Gecko), Opera, suporte ao Safari, mas não ao Internet Explorer.
fonte
se seu botão for gerado dinamicamente:
Você pode passar parâmetros de string para funções javascript como abaixo do código:
Passei 3 parâmetros onde o terceiro é um parâmetro de string espero que ajude.
fonte
Editado: se o requisito é referenciar o objeto global (js) no seu código HTML, você pode tentar isso. [Não use aspas ('ou ") ao redor da variável]
Referência de violino .
Javascript:
HTML:
fonte
Parâmetro múltiplo:
fonte
Para passar vários parâmetros, você pode converter a string concatenando-a com o valor ASCII como, para aspas simples, podemos usar '
fonte
Aqui está uma solução Jquery que estou usando.
Jquery
HTML
fonte
Você pode passar o valor de referência ou string, basta colocar a função dentro das "" vírgulas duplas asp abaixo do instantâneo
fonte
Para passar vários parâmetros, você pode converter a string concatenando-a com o valor ASCII como, para aspas simples, podemos usar
'
o mesmo parâmetro que você pode passar para o
onclick()
evento. Na maioria dos casos, ele funciona com todos os navegadores.fonte
se usar para geração de um conjunto de botões com diferentes parâmetros de manipuladores. https://www.w3schools.com/js/js_function_closures.asp
Se nós fizermos:
depois a função foo start após cada página de atualização.
Se nós fizermos:
depois, para todos os botões criados no loop, o último valor do parâmetro "result.name"
fonte
Se você estiver usando asp, poderá usar o javascript:
HTML:
Javascript:
fonte
Se você estiver adicionando botão ou link dinamicamente e enfrentando o problema, isso pode ser útil. Eu resolvi assim.
Eu sou novo em HTML, JQuery e JS. Pode ser que meu código não seja otimizado ou sintaxe, mas estava funcionando para mim.
fonte
No Razor, você pode passar parâmetros dinamicamente: @ Model.UnitNameVMs [i] .UnitNameID
fonte
Você pode usar isso,
é trabalho pra mim
fonte
fonte
O seguinte funciona muito bem para mim,
fonte
Você pode usar este código no método onclick do botão:
fonte