Я довольно новичок в этом и не знаю точно, как сообщить об ошибке, но сначала я хочу подтвердить, что это ошибка, а затем продолжить. Но вот что я нахожу:

1) При создании атрибута управления аудиообъектом атрибут управления будет реагировать на строку, как если бы она была логической. Например:

<button onclick="example()">Try this</button>
<script>

function example() {
    var aud = document.createElement("AUDIO");
        aud.setAttribute("src","example.mp3");
    aud.setAttribute("controls", "controls");
}

Хорошо, мы поместили элементы управления туда, потому что они делают элементы управления равными элементами управления: дело в том, что вы можете поместить туда любую старую строку, и она работает просто отлично - яблоко, банан, груша, что угодно.

2) Разве значение не должно быть логическим? Что ж, когда вы используете логическое значение, например false, вы все равно получаете значение true. (False == True) Это работает так же, как если бы вы набрали true.

... и если вы поставите что-то еще, кроме true или false (просто введите что-либо кроме целого числа, строки или значения true или false), вы получите false (или это просто не работает). Все равно true, а не строковое, нецелое число равно false (или просто не работает).

Наконец, вы можете даже попытаться установить атрибуты элементов управления на доступном аудиоэлементе:

var aud = document.getElementById("idhere");
function accessAudioElement() { 
    aud.controls = false;
} 

По крайней мере, здесь истина и ложь на самом деле работают как истина и ложь, но еще раз, любая строка или целое число также даст вам истину, а любой нестроковый / нецелое число нарушит код.

Может ли кто-нибудь помочь мне здесь, потому что я не думаю, что это должно работать именно так ... и если да, то какой смысл использовать логическое значение, когда больше всего будет работать?

Конечно, я все еще учусь, так что, возможно, это не ошибка, может быть, по какой-то причине это должно сработать, но если это так, кто-то, пожалуйста, поделится логикой этого со мной.

Я просто не понимаю. Спасибо магия

3
Magic 24 Апр 2017 в 07:39

2 ответа

Лучший ответ

Возможно, вы захотите прочитать / найти больше информации о Javascript Truthy $ Falsey. Это очень важно.

https://j11y.io/javascript/truthy-falsey/

enter image description here

1
Dalin Huang 24 Апр 2017 в 05:11

Это расширенный ответ на то, что @nnnnnn предложил в комментариях.

Aud.controls = false; не устанавливает атрибут, он устанавливает свойство.

Вам необходимо использовать setAttribute () метод, чтобы добавить указанный атрибут к элементу.

aud.setAttribute("controls", "controls");

И используйте removeAttribute () метод удаления указанного атрибута из элемента.

aud.removeAttribute("controls");

Чтобы узнать больше об этих методах, взгляните на прикрепленные гиперссылки.

2
Community 23 Май 2017 в 12:25