'href' is null or not an object - any ideas?

Discussion in 'JavaScript' started by ChannerUK, Sep 25, 2007.

  1. #1
    Hi guys. I'm putting a gallery script on my website and I keep getting the followin error 'href' is null or not an object on the following line var popwin=open(imgsrc.href, "popwin", popupsetting[1]) in the code below.

    <script type="text/javascript">
    
    
    
    var dimension="5x4" 
    var imagepath="images/gallery/" 
    var href_target="new" 
    
    var popupsetting=[1, "width=500px, height=400px, scrollbars, resizable"]
    
    var descriptionprefix=[0]
    
    var gsortorder="desc"
    
    var targetlinkdir="images/gallery/"
    
    
    function sortbydate(a, b){ 
    if (gsortorder=="asc") 
    return new Date(a[1])-new Date(b[1])
    else if (gsortorder=="desc") 
    return new Date(b[1])-new Date(a[1])
    }
    
    if (gsortorder=="asc" || gsortorder=="desc")
    galleryarray.sort(sortbydate)
    
    var totalslots=dimension.split("x")[0]*dimension.split("x")[1]
    
    function buildimage(i){
    var imagecompletepath=(targetlinkdir!="")? targetlinkdir+galleryarray[i][0] : imagepath+galleryarray[i][0]
    var tempcontainer='<a href="'+imagecompletepath+'" target="'+href_target+'" onClick="return popuplinkfunc(this)">'
    tempcontainer+='<img src="'+imagepath+galleryarray[i][0]+'" title="'+galleryarray[i][0]+' ['+galleryarray[i][1]+']" />'
    tempcontainer+='</a><br />'
    tempcontainer+=(descriptionprefix[0]==1)? descriptionprefix[1]+(i+1) : ""
    return tempcontainer
    }
    
    function jumptopage(p){
    var startpoint=(p-1)*totalslots
    var y=1;
    for (i=0; i<totalslots; i++){
    document.getElementById("slide"+i).innerHTML=(typeof galleryarray[startpoint+i]!="undefined")? buildimage(startpoint+i) : ""
    }
    while(document.getElementById("navlink"+y)!=null){
    document.getElementById("navlink"+y).className=""
    y++
    }
    document.getElementById("navlink"+p).className="current"
    }
    
    var curimage=0
    for (y=0; y<dimension.split("x")[1]; y++){
    for (x=0; x<dimension.split("x")[0]; x++){
    if (curimage<galleryarray.length)
    document.write('<div id="slide'+curimage+'" class="slideshow">'+buildimage(curimage)+'</div>')
    curimage++
    }
    document.write('<br style="clear: left" />')
    }
    
    function popuplinkfunc(imgsrc){
    if (popupsetting[0]==1){
    var popwin=open(imgsrc.href, "popwin", popupsetting[1])
    popwin.focus()
    return false
    }
    else
    return true
    }
    
    </script>
    Code (markup):

    Here's the navigational element -
    <script type="text/javascript">
    for (i=1; i<Math.ceil(galleryarray.length/totalslots)+1; i++)
    document.write('<a id="navlink'+i+'" href="javascript:jumptopage('+i+')\">Page'+i+'</a> ')
    document.getElementById("navlink1").className="current"
    </script>
    Code (markup):
    Here's some more code from a php file that's also needed for the gallery script..
    <?
    Header("content-type: application/x-javascript");
    
    function returnimages($dirname=".") {
       $pattern="\.(jpg|jpeg|png|gif|bmp)$";
       $files = array();
       $curimage=0;
       if($handle = opendir($dirname)) {
           while(false !== ($file = readdir($handle))){
                   if(eregi($pattern, $file)){
    		 $filedate=date ("M d, Y H:i:s", filemtime($file));
                     echo 'galleryarray[' . $curimage .']=["' . $file . '", "'.$filedate.'"];' . "\n";
                     $curimage++;
                   }
           }
    
           closedir($handle);
       }
       return($files);
    }
    
    echo "var galleryarray=new Array();" . "\n";
    returnimages();
    ?> 
    Code (markup):

    Can anyone tell me where I've gone wrong to get this error and what needs to be rectified..?


    Thanks in advance.


    PS. already posted here > http://forums.digitalpoint.com/showthread.php?t=489784 ,but thought this might be a better place for the thread.
     
    ChannerUK, Sep 25, 2007 IP
  2. ezpz

    ezpz Peon

    Messages:
    25
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Instead of

    onClick="return popuplinkfunc(this)"

    I think you should try using

    onClick="return popuplinkfunc(location)"
     
    ezpz, Sep 25, 2007 IP
  3. ChannerUK

    ChannerUK Peon

    Messages:
    4
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Thanks for the reply. I've tried changing the code you suggested but now I get a type mismatch 'return' error..
     
    ChannerUK, Sep 25, 2007 IP
  4. ezpz

    ezpz Peon

    Messages:
    25
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #4
    Could you try putting a few alerts in the code, to track down which line is causing the error?
     
    ezpz, Sep 25, 2007 IP
  5. Mike Bell

    Mike Bell Active Member

    Messages:
    54
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    71
    #5
    is open a custom function you have?
    var popwin=open(imgsrc.href, "popwin", popupsetting[1])
    should be
    var popwin=window.open(imgsrc.href, "popwin", popupsetting[1])
    if not
     
    Mike Bell, Sep 25, 2007 IP