var srcType = source.slice(source.lastIndexOf('.'));
//srcType = fileExtension
var imageFormats = ['.jpg','.png','.gif'],
videoFormats = ['.ogv','.png','.gif'];
// two lists, acceptable video/image types
var htmlSting = ''; / /initialize the htmlstring
if (srcType in imageFormats) //heres where my question is!!!
htmlString = '<img class="empty" id="it" src="'+source+'"> </img>';
else
htmlString = '<video class="empty" id="it" src="'+source+'" controls> </img>';
// these statements choose the proper media type.
好的,所以继承人:我正在编写需要根据文件类型选择html的内容。 有没有办法实现(imageFormats中的srcType)?这不起作用。我需要一个for循环吗?我总是可以在html中使用或者,但是当我们添加格式时,这将是详尽无遗的。 我不喜欢for循环的原因是它在时间关键区域使用宝贵的时间。
答案 0 :(得分:1)
'in'操作仅适用于对象的属性,而不适用于数组的值。我想你想要indexOf(srcType),如果找不到则返回-1,如果找到则返回索引。
imageFormats.indexOf('.jpg'); // => 0
imageFormats.indexOf('.foo'); // => -1
if(imageFormats.indexOf(srcType)){ }
var obj = {a: 1};
if('a' in obj){ } // evaluates to true
if('b' in obj){ } // evaluates to false
答案 1 :(得分:0)
您可以在Array对象上使用indexOf
。有关javascript库中可用选项的详细信息,请参阅this question。
indexOf
可从JavaScript 1.6(ECMAScript第5版)获得,并且链接的MDC页面中的旧浏览器有后备。
我不喜欢for循环的原因是它在a中使用了宝贵的时间 时间紧迫的区域。
您必须提供更多详细信息。一个简单的循环不会花费太多时间,而你拥有的只是数组中的三个元素。即使有可能成为50或100,for循环也不应该是一个大问题。
另外,如果你可以表达你正在做的事情(以及何时),你可能会得到更好的答案。