¿Cómo concateno una cadena con una variable?
Entonces estoy tratando de hacer una cadena a partir de una cadena y una variable pasada (que es un número). ¿Cómo puedo hacer eso?
Tengo algo como esto:
function AddBorder(id){
document.getElementById('horseThumb_'+id).className='hand positionLeft'
}
Entonces, ¿cómo consigo ese 'horseThumb' y una identificación en una sola cadena?
Probé todas las opciones, también busqué en Google y además de saber que puedo insertar una variable en una cadena como esta getElementById("horseThumb_{$id}")
<-- (no funcionó para mí, no sé por qué) no encontré nada útil. Entonces cualquier ayuda sería muy apreciada.
Tu código es correcto. Quizás tu problema es que no estás pasando un ID a la AddBorder
función, o que no existe un elemento con ese ID. O podría estar ejecutando su función antes de que se pueda acceder al elemento en cuestión a través del DOM del navegador.
Desde ECMAScript 2015, también puede utilizar literales de plantilla (también conocidos como cadenas de plantilla) :
document.getElementById(`horseThumb_${id}`).className = "hand positionLeft";
Para identificar el primer caso o determinar la causa del segundo caso, agregue esto como las primeras líneas dentro de la función:
alert('ID number: ' + id);
alert('Return value of gEBI: ' + document.getElementById('horseThumb_' + id));
Eso abrirá ventanas emergentes cada vez que se llame a la función, con el valor de id
y el valor de retorno de document.getElementById
. Si aparece undefined
la ventana emergente del número de identificación, no está pasando un argumento a la función. Si la identificación no existe, obtendrá su número de identificación (¿incorrecto?) en la primera ventana emergente pero aparecerá null
en la segunda.
El tercer caso ocurriría si su página web se ve así, intentando ejecutarse AddBorder
mientras la página aún se está cargando:
<head>
<title>My Web Page</title>
<script>
function AddBorder(id) {
...
}
AddBorder(42); // Won't work; the page hasn't completely loaded yet!
</script>
</head>
Para solucionar este problema, coloque todo el código que usa AddBorder dentro de un onload
controlador de eventos:
// Can only have one of these per page
window.onload = function() {
...
AddBorder(42);
...
}
// Or can have any number of these on a page
function doWhatever() {
...
AddBorder(42);
...
}
if(window.addEventListener) window.addEventListener('load', doWhatever, false);
else window.attachEvent('onload', doWhatever);
En javascript el operador "+" se utiliza para sumar números o concatenar cadenas. si uno de los operandos es una cadena "+" concatena, y si son solo números los suma.
ejemplo:
1+2+3 == 6
"1"+2+3 == "123"
Esto puede suceder porque el script Java a veces permite espacios en blanco si una cadena está concatenada con un número. intente eliminar los espacios y cree una cadena y luego pásela a getElementById.
ejemplo:
var str = 'horseThumb_'+id;
str = str.replace(/^\s+|\s+$/g,"");
function AddBorder(id){
document.getElementById(str).className='hand positionLeft'
}