【发布时间】:2019-03-02 10:27:34
【问题描述】:
继我之前的问题之后。我做了一个辅助函数(见下文),将元素插入 DOM。该函数的一部分使用“instanceof”来确定“this”元素是否是 HTMLMediaElement 的实例,并通过参数“elemSrc”确定源属性。
我的问题:有没有办法检查一个元素是否“期望”一个要定义的源属性?我问的原因是,然后我可以将此函数用于“期望”定义源属性的所有元素。我知道我可以使用 instanceof 并删除每个使用 source 属性的元素,但如果可能的话,我更喜欢更流畅的方式。
function insertElem(numberOfElems, elemTag, elemId, elemClass, parentSelector, elemSrc){
/*
* numberOfElements:- Pass in a whole integer.
* elemTag:- Pass in the element tag type (inside "" or '').
* elemId:- Pass in a name for the element id (inside "" or ''),
an integer is appended to the id name by the for loop.
* elemClass:- Pass in a name for element class (inside "" or '').
* parentSelector:- Pass in the identifier of the parent element (inside "" or '')
* querySelector prefixes: # = id
. = class
none = tag
*elemSrc:- Pass in the source media url (inside "" or '').
*/
if (numberOfElems > 1) {
for (i = 0; i < numberOfElems; i++) {
var elem = this[elemId + i];
elem = document.createElement(elemTag);
elem.id = elemId + '_' + i;
if (elemClass) {
elem.className = elemClass;
}
parentEl = document.querySelector(parentSelector);
parentEl.appendChild(elem);
if(elem instanceof HTMLMediaElement) {
elem.src = elemSrc;
}
}
} else {
var elem = this[elemId];
elem = document.createElement(elemTag);
elem.id = elemId;
if (elemClass) {
elem.className = elemClass;
}
parentEl = document.querySelector(parentSelector);
parentEl.appendChild(elem);
if(elem instanceof HTMLMediaElement) {
elem.src = elemSrc;
}
}
}
【问题讨论】:
-
最好的选择是创建一个包含所有支持源属性的标签的数组,然后检查标签是否存在于数组中
标签: javascript src