JavaScript: проблема с функцией объединения и если - PullRequest
0 голосов
/ 29 августа 2011

Хорошо, у меня есть этот код в Javascript:

function fullWin() {
    if (document.getElementById('embed').src = 'vid1.mov') {
        window.open('vid1.html');
    }
    else if (document.getElementById('embed').src = 'vid2.mov') {
        window.open('vid2.html');
    }
}

Моя проблема в том, что когда равным источником для встраивания является vid2.mov, источник меняется на vid1.mov, и открывается vid1.html. Я хочу, чтобы, если источник встраивания равнялся vid2.mov, vid2.html открывался и висеверса. Для тех, кто хочет знать HTML-код.

<object height="100%" width="100%">
    <embed id="embed" target="_top" src="Amelie.m4v" autostart="false" height="100%" width="100%" scale="tofit"></embed>
</object>
<div id="div8" onClick="fullWin()">Fullscreen</div>

Ответы [ 2 ]

3 голосов
/ 29 августа 2011

Вам нужно использовать два знака =, а не один.Или еще лучше использовать три ===. Подробнее об операторах сравнения

  • Один знак равенства - это присвоение, var a = 1;
  • Два - эквивалент преобразования типа, '0' == 0; // true, because '0' is converted to a number
  • Три это строгое сравнение, '0' === 0; // false, because one is a string and one is a number
1 голос
/ 29 августа 2011

if (document.getElementById ('embed'). Src = 'vid1.mov')

Это не сработает, даже если правильно использовать оператор сравнения (== или ===). Свойство src элемента <emed> возвращает разрешенный абсолютный URL-адрес, такой как http://www.example.com/vid1.mov, а не точное исходное значение атрибута.

Вы можете использовать getAttribute('src') для получения буквального значения атрибута, за исключением того, что это не работает в IE; getAttributeNode('src').value - это обходной путь, или попробуйте .endsWith('vid1.mov'), или что-то вроде:

window.open(document.getElementById('embed').src.replace('.mov', '.html');

Я бы посоветовал использовать HTML5-видео с резервной версией Flash в эти дни; <embed> несколько старомодно и проблематично.

...