Click here to Skip to main content
15,896,207 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello,

For some reason my switch statement below isn't working. The only thing I get is the first case repeated in every . I'm not sure if I'm missing something. Would anyone be able to help?



JavaScript
/*------------------------------------------------------------------------------------------------------------------------
File Extension add-ons to <a>
--------------------------------------------------------------------------------------------------------------------------*/
		
		
		$.fn.addFileExt = (function(options){
				
			var pdfExt = /[.](pdf)/; 
			var pptxExt = /[.](pptx)/;
			var xlsExt = /[.](xls)/;
			var docExt = /[.](doc)/;
			var docxExt = /[.](docx)/;
				
			var _noExt = ''		
						
			var fileExt = {_fileExtType: '_noExt'};
			$.extend(fileExt, options)		
			
			var overRideExt = $.metadata ? $.extend({}, fileExt, $.metadata.get(this))
						:fileExt;	
				
				return $(this).each(function() {
											
				var pdfResult = $(this).attr('href').match(pdfExt);
				var pptxResult = $(this).attr('href').match(pptxExt);
				var xlsResult = $(this).attr('href').match(xlsExt);
				var docResult = $(this).attr('href').match(docExt);
				var docxResult = $(this).attr('href').match(docxExt);
						   						
				var spanPDFClass = $("<span>[PDF]</span>").addClass("ext");
				var spanPPTXClass = $("<span>[PPTX]</span>").addClass("ext");
				var spanDOCClass = $("<span>[DOC]</span>").addClass("ext");
				var spanDOCXClass = $("<span>[DOCX]</span>").addClass("ext");
				var spanXLSClass = $("<span>[XLS]</span>").addClass("ext");
					
			    var extResult = $(this).attr('href').match(overRideExt._fileExtType);
							
					switch(extResult){
									    case pdfResult:
									    $(this).parent().append(spanPDFClass);
									  	 break;
										
								   		case pptxResult:
										$(this).parent().append(spanPPTXClass);		
										break;
										
										case docResult:
										$(this).parent().append(spanDOCClass);
										break;
										
										case docxResult:
										$(this).parent().append(spanDOCXClass);
										break;
										
										case xlsResult:
										$(this).parent().append(spanXLSClass);
										break;	
				
							};				
				  	
				});
				   
        	});	


JavaScript
/*------------------------------------------------------------------------------------------------------------------------
File extension add-ons (pdf,pptx,doc,docx,xls)
--------------------------------------------------------------------------------------------------------------------------*/

    // Check whether links are internal(www.ashp.org):
			    // (Only works with elements that have href):
				var internalURL = window.location.hostname;	 
			
				$.extend($.expr[':'],{
    				internal: function(a) {
        			if(!a.href) {return false;}
				    return a.hostname && a.hostname == internalURL;					
					}
				});

$('li a:internal[href$="pdf"]').addFileExt({_fileExtType:'pdfExt'}).css('background-color','red');
$('li a:internal[href$="pptx"]').addFileExt({_fileExtType:'pptxExt'}).css('background-color','yellow');
$('li a:internal[href$="doc"]').addFileExt({_fileExtType:'docExt'}).css('background-color','green');
$('li a:internal[href$="docx"]').addFileExt({_fileExtType:'docxExt'}).css('background-color','orange');
$('li a:internal[href$="xls"]').addFileExt({_fileExtType:'xlsExt'}).css('background-color','blue');


HTML
<ul>
	<li><a href="http://wifl/test.pdf">Test PDF</a></li>
    <li><a href="http://wifl/test.pptx">Test PPTX</a></li>
    <li><a href="http://wifl/test.doc">Test DOC</a></li>
    <li><a href="http://wifl/test.docx">Test DOCX</a></li>
    <li><a href="http://wifl/test.xls">Test XLS</a></li>
</ul>
Posted
Comments
Mohibur Rashid 19-Mar-15 20:33pm    
try view your log result:
with console.log
print both the variable and try to understand if they are your desired data.

in case if you do not know what is log view: Its a console to help the developer. Available in firefox and chrome for sure. I am not sure about ie though. In firefox or chrome press Ctrl+j a small window will be visible. You can do your various testing on that window. google about it. You will get more information.
Member 10283090 20-Mar-15 13:32pm    
Thank you. I learned something new. I had an issue with the .Match.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900