¿Cómo concateno una cadena con una variable?

Resuelto necker asked hace 14 años • 5 respuestas

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.

necker avatar Nov 21 '10 02:11 necker
Aceptado

Tu código es correcto. Quizás tu problema es que no estás pasando un ID a la AddBorderfunció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 idy el valor de retorno de document.getElementById. Si aparece undefinedla 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á nullen la segunda.

El tercer caso ocurriría si su página web se ve así, intentando ejecutarse AddBordermientras 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 onloadcontrolador 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);
PleaseStand avatar Nov 20 '2010 20:11 PleaseStand

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"
stewe avatar Nov 20 '2010 19:11 stewe

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'

}
Rahul Das Gupta avatar Jul 05 '2013 12:07 Rahul Das Gupta