2011-10-24 19 views
16

Si el img continuación está presenteJavascript: obtenga <img> src y establezca como variable?

<img id="youtubeimg" src="http://i1.ytimg.com/vi/VK4ah66jBvE/0.jpg"/> 

y el guión es

<script> 
var youtubeimgsrc = "something here" 

document.write(''+youtubeimgsrc+'') 
</script> 

y el resultado debería ser http://i1.ytimg.com/vi/VK4ah66jBvE/0.jpg

qué puedo hacer para conseguir la fuente de imagen y establecer como una variable .

+1

¿Una pregunta de JavaScript y ninguna respuesta usando jQuery? ¡Que extraño! 'var youtubeimgsrc = $ ('youtubeimg'). attr ('src');' – Keyslinger

Respuesta

41

Mientras el guión es después de la img, entonces:

var youtubeimgsrc = document.getElementById("youtubeimg").src; 

Ver getElementById en la especificación DOM.

Si el guión es antes de la img, a continuación, por supuesto, el img no existe todavía, y eso no funciona. Esta es una razón por la cual muchas personas recomiendan colocar scripts al final del elemento body.


nota

lateral: No importa en su caso porque usted ha utilizado una URL absoluta, pero si se ha utilizado un pariente URL en el atributo, como esto:

<img id="foo" src="/images/example.png"> 

... la propiedad reflejada src será resuelta URL   — que es, la URL absoluta que se convierte en. Entonces, si eso estuviera en la página http://www.example.com, document.getElementById("foo").src le daría "http://www.example.com/images/example.png".

Si querían el contenido del atributo src como es, sin ser resuelto, tendrá que utilizar getAttribute lugar: document.getElementById("foo").getAttribute("src"). Eso le daría "/images/example.png" con mi ejemplo anterior.

Si tiene una URL absoluta, como la de su pregunta, no importa.

+0

Gracias trabaja –

6

¿Qué tal esto por ejemplo:

var youtubeimgsrc = document.getElementById("youtubeimg").getAttribute('src'); 
+1

Sin necesidad de 'getAttribute',' src' es una [propiedad reflejada] (http://www.w3.org /TR/DOM-Level-2-HTML/html.html#ID-97320704) documentado por el estándar y compatible con todos los navegadores desde mediados de los 90 (por ejemplo, no en ese orden ;-)). –

+0

@ T.J. Crowder es correcto, esta era solo una alternativa si quería agregar propiedades personalizadas para poder usar esto. Aún así elegiría tu respuesta si fuera él. – ant

+1

@ T.J.Crowder: '.src' y' .getAttribute ('src') 'devuelven resultados diferentes. La primera opción resolverá ** URL ** mientras que la segunda opción devolverá el parámetro ** src ** tal como está. Por lo tanto, esta es la respuesta correcta a la pregunta. – Daew

0

en esta situación, que le agarra el elemento por su ID usando getElementById y luego sólo tiene que utilizar .src

var youtubeimgsrc = document.getElementById("youtubeimg").src; 
3

Si no tiene una identificación en la imagen pero tiene un div principal, esta también es una técnica que puede usar.

<div id="myDiv"><img src="http://www.example.com/image.png"></div> 

var myVar = document.querySelectorAll('#myDiv img')[0].src 
1

Utilice JQuery, es fácil.

incluir la librería jQuery en el archivo HTML en la cabeza como tal:

<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
</head> 

(Asegúrese de que esta etiqueta script va delante de sus otras etiquetas script en el archivo html)

orientar su Identificación en su archivo JavaScript como tal:

<script> 
var youtubeimcsrc = $('#youtubeimg').attr('src'); 

//your var will be the src string that you're looking for 

</script> 
+0

ok, e incluso esto es fácil .. 'document.getElementById (" youtubeimg "). Src'? .. o puede ser si solo defines tu propia función 'función a (elem) {return document.getElementById (elem); } 'Ahora esto es más fácil' var youtubeimgsrc = a ('youtubeimg'). Src' –

Cuestiones relacionadas