2011-07-11 10 views
5

Właśnie zacząłem uczyć się JS. Próbuję zmienić wartość osadzenia src w tagu obecnym w moim kodzie HTML. Ale jestem w stanie to zrobić za pomocą następującego kodu pisałem -Jak zmienić wartość osadzonego src w JavaScript?

HTML -

<ol> 
<li><a href="http://embedgames.ru/wp-content/games/kitty-throw.swf" 
    onclick="showGame(this);return false;">Kitty Throw</a></li> 
</ol> 

<embed id="gameHolder" src="http://pictat.com/i/2011/7/10/32479playscrnba.jpg" 
    quality="high" menu ="false" width="550" height="400" 
    type="application/x-shockwave-flash" 
    pluginspage="http://www.macromedia.com/go/getflashplayer" /></center> 

JS:

function showGame(whichgame){var source=whichgame.getAttribute("href"); 
var game=document.getElementById("gameHolder"); 
game.setAttribute("src",source);} 

chcę JS, aby wyświetlić plik flash wybranego w gameHolder spacja, która domyślnie przechowuje obraz. Nie jestem w stanie tego zrobić tylko dzięki mojej początkowej znajomości JS, proszę również objaśnić kod w miarę jego używania.

+0

można uwzględnić niektóre więcej kontekstu, takiego jak odpowiedni HTML lub jak faktycznie wywołujesz tę funkcję. Co więcej, czy uważasz, że biblioteka skryptów, takich jak JQuery lub Prototype? – ghayes

+2

Czy wypróbowałeś game.src = source; ? –

+0

Twój kod wydaje się działać. W której części masz problem? –

Odpowiedz

8

Może to zależeć od przeglądarki i typu osadzonego obiektu, sposobu zmiany obiektu (na przykład istnieją specjalne metody dla filmów flash takich jak Play(), ale obiekt nie jest flash-iem film na rozpocząć)

powszechnym sposobem jest zastąpienie całego osadzenia-węzeł z nowym <embed>:

function showGame(whichgame){ 
    var source=whichgame.getAttribute("href"); 
    var game=document.getElementById("gameHolder"); 
    var clone=game.cloneNode(true); 
    clone.setAttribute('src',source); 
    game.parentNode.replaceChild(clone,game) 
} 
+1

Dziękuję bardzo SOO. Działało idealnie. BTW możesz umówić wyjaśnienie funkcji cloneNode ... –

+0

cloneNode() tworzy kopię węzła, to wszystko. Węzeł wewnątrz DOM zostanie zastąpiony (przy użyciu replaceChild()) tą kopią (po zmianie atrybutu src kopii). https://developer.mozilla.org/En/DOM/Node.cloneNode –

+3

Więc, rozumiem, że zmiana atrybutu 'src'' embed' nie ma żadnego efektu? – rvighne

0

można ustawić src znacznika embed w javascript, na które trzeba mieć, aby napisać osadzić tag w javascript, jak poniżej przykład:

function onclickofSomething() { 
    $('#IDOfParentElement').html("<embed type='application/x-mplayer2' pluginspage='http:///www.microsoft.com/Windows/MediaPlayer/' src='" + "<%=YourVideoPath%>" + "YourVideoName" + ID + ".mp4/wmv" + "' autostart='1' showstatusbar='1' enabled='1' showdisplay='1' showcontrols='1' width='630' height='380'></embed>"); 
} 

można również zobaczyć poniżej URL: konieczność ustalenia nazwy pliku wideo przy użyciu javascript http://www.webdeveloper.com/forum/showthread.php?53086-how-to-change-the-src-in-lt-embed-gt-using-javascripthttp://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/16626/how-to-change-the-the-value-of-src-in-embed-using-javascript

0

To działa również w przypadku zmiany param src tylko

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> 
 
\t <EMBED id="movie" src="first.swf" "></EMBED> 
 
</OBJECT> 
 
<ul> 
 
\t <li name='moviename'>first.swf</li> 
 
\t <li name='moviename'>second.swf</li> 
 
\t <li name='moviename'>third.swf</li> 
 
</ul> 
 
<script type="text/javascript"> 
 
\t var names=document.getElementsByName("moviename"); 
 
\t for (var i = names.length - 1; i >= 0; i--) { 
 
\t \t names[i].addEventListener("click", myFunction); 
 
\t \t function myFunction() { 
 
    \t \t document.getElementById("movie").setAttribute("src", this.innerHTML); 
 
\t \t } 
 
\t } 
 
</script>

Powiązane problemy