Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: Why do i keep getting errors

  1. #1
    Join Date
    Dec 2006
    Posts
    6
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Question (**SOLVED**) Why do i keep getting errors

    ok i have a code that pulls data out from a xml file, once pulled i have the javascript parse it to the page, that all works, now i need it to have add a link to refer to another javascript function.

    The problem is this.

    My code works fine like this:
    Code:
    <script type="text/javascript">
    function changemusic(id) {
    
    xmlDoc=loadXMLDoc('changemusic.php?id='+id);
    var playlist_div=document.getElementById("playlist");
    playlist_div.innerHTML='';
    
    
    var x=xmlDoc.getElementsByTagName('artist');
    var k=xmlDoc.getElementsByTagName('title');
    var j=xmlDoc.getElementsByTagName('java');
    for (i=0;i<x.length;i++)
      {
    var artist=(x[i].childNodes[0].nodeValue)
    var title=(k[i].childNodes[0].nodeValue) 
    var java=(j[i].childNodes[0].nodeValue)
    
     
    document.getElementById("playlist").innerHTML +=artist+' - '+title+'<input type=button  value=play><br>';
     }
    
    }
    </script>
    Butonce i add the onclick command to the button i recieve errors
    Code:
    <script type="text/javascript">
    function changemusic(id) {
    
    xmlDoc=loadXMLDoc('changemusic.php?id='+id);
    var playlist_div=document.getElementById("playlist");
    playlist_div.innerHTML='';
    
    
    var x=xmlDoc.getElementsByTagName('artist');
    var k=xmlDoc.getElementsByTagName('title');
    var j=xmlDoc.getElementsByTagName('java');
    for (i=0;i<x.length;i++)
      {
    var artist=(x[i].childNodes[0].nodeValue)
    var title=(k[i].childNodes[0].nodeValue) 
    var java=(j[i].childNodes[0].nodeValue)
    
     
    document.getElementById("playlist").innerHTML +=artist+' - '+title+'<input type=button value onclick='+java+'><br>';
     }
    
    }
    </script>
    Any ideas why?

    All help appreciated.

    Mike
    Last edited by skatermike21988; 12-30-2006 at 09:00 AM.

  2. #2
    Join Date
    Mar 2005
    Location
    SE PA USA
    Posts
    30,495
    Thanks
    82
    Thanked 3,449 Times in 3,410 Posts
    Blog Entries
    12

    Default

    Code:
    var java=(j[i].childNodes[0].nodeValue)
    and:

    Code:
    document.getElementById("playlist").innerHTML +=artist+' - '+title+'<input type=button value onclick='+java+'><br>';
    appears to assign as an onclick event a node value which could only be (as far as I can see) either null or a simple string. An onclick event needs to be a function.
    - John
    ________________________

    Show Additional Thanks: International Rescue Committee - Donate or: The Ocean Conservancy - Donate or: PayPal - Donate

  3. #3
    Join Date
    Dec 2006
    Posts
    6
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    there is another function, for it to play the song, that function works, the
    Code:
    var java=(j[i].childNodes[0].nodeValue)
    Outputs a value that php parses to xml and the javascript pulls out the data, i tried alerting that walue and it is outputing the correct values.

  4. #4
    Join Date
    Mar 2005
    Location
    SE PA USA
    Posts
    30,495
    Thanks
    82
    Thanked 3,449 Times in 3,410 Posts
    Blog Entries
    12

    Default

    Quote Originally Posted by skatermike21988 View Post
    there is another function, for it to play the song, that function works, the
    Code:
    var java=(j[i].childNodes[0].nodeValue)
    Outputs a value that php parses to xml and the javascript pulls out the data, i tried alerting that walue and it is outputing the correct values.
    Still not convinced. What is a typical value for the variable java? I notice that you are not quoting as would be required in valid HTML and innerHTML. For some values, that would work, for a function, it will not.
    - John
    ________________________

    Show Additional Thanks: International Rescue Committee - Donate or: The Ocean Conservancy - Donate or: PayPal - Donate

  5. #5
    Join Date
    Dec 2006
    Posts
    6
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Quote Originally Posted by jscheuer1 View Post
    Still not convinced. What is a typical value for the variable java? I notice that you are not quoting as would be required in valid HTML and innerHTML. For some values, that would work, for a function, it will not.
    The value of java is pulled from a xml document parsed by php, the xml contains the function with the value that needs to be contained in the function. the actual value that goes in the onclick is like this:
    Code:
    onclick=song('the source of the song','Artist And Title')
    i have also tried quoting it like this:
    Code:
    onclick="song('the source of the song','Artist And Title')"
    That hasn't worked either.
    Last edited by skatermike21988; 12-30-2006 at 04:32 AM.

  6. #6
    Join Date
    Mar 2005
    Location
    SE PA USA
    Posts
    30,495
    Thanks
    82
    Thanked 3,449 Times in 3,410 Posts
    Blog Entries
    12

    Default

    That's not a typical example, it is a general example. A typical example would be a bit of actual code that becomes a part of the document. Even your general example raises another question though. What's song()? Is it defined in time for the user to click on the button and use it? Are the parameters passed to it in the proper form (variables or strings as the case may be - your example makes them look like strings) and are they available to it at the time of the event? Is song() itself valid?

    A link to your page may help.
    - John
    ________________________

    Show Additional Thanks: International Rescue Committee - Donate or: The Ocean Conservancy - Donate or: PayPal - Donate

  7. #7
    Join Date
    Dec 2006
    Posts
    6
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Quote Originally Posted by jscheuer1 View Post
    That's not a typical example, it is a general example. A typical example would be a bit of actual code that becomes a part of the document. Even your general example raises another question though. What's song()? Is it defined in time for the user to click on the button and use it? Are the parameters passed to it in the proper form (variables or strings as the case may be - your example makes them look like strings) and are they available to it at the time of the event? Is song() itself valid?

    A link to your page may help.
    ok song is another function that i am not having a problem with.

    here is a link to my page

    http://www.music.friendshideout.com/desktopplayer.php

    you will need to register in order to view, the register page will open in a seperate window, once registered you can exit and login, you will see my picture as i am an instant friend, click on it and a list of songs will be displayed, when i click play is when i recieve the errors.


    it comes up with errors only when i add onclick="somefunction();"

    i have even tried making up a basic function to display data in a div and i still recieve errors. Here is the whole code

    desktopplayer.php:
    Code:
    
    
    <html>
    <head>
    
    
    
    
    <script type="text/javascript" src="loadxmldoc.js"> 
    <script type="text/javascript">
    
    function song(what,who){
    document.getElementById("music1").innerHTML='<object id="mediaplayer1" width="200" height="45" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" type="application/x-oleobject"><param name="URL" value="'+what+'"><param name="AutoStart" VALUE="True"><param name="uiMode" value="full"><embed type="application/x-mplayer2" src="'+what+'" ShowControls="1" AutoStart="1" width="200" height="45"></embed></object>';
    nowplaying(who);
    return false;
    }
    
    function nowplaying(who)
    {
    document.getElementById("playing").innerHTML='<font color="blue"><h4>Now Playing '+who;
    		
    	
    }
    
    
    
    function changemusic(id) {
    
    xmlDoc=loadXMLDoc('changemusic.php?id='+id);
    var playlist_div=document.getElementById("playlist");
    playlist_div.innerHTML='';
    
    
    var x=xmlDoc.getElementsByTagName('artist');
    var k=xmlDoc.getElementsByTagName('title');
    var j=xmlDoc.getElementsByTagName('java');
    var playlist = document.getElementById("playlist");
    for (i=0;i<x.length;i++)
      {
    var artist=(x[i].childNodes[0].nodeValue);
    var title=(k[i].childNodes[0].nodeValue) ;
    var java=(j[i].childNodes[0].nodeValue);
    
    
    
    
     
    document.getElementById("playlist").innerHTML +=artist+' - '+title+'<input type="button" value="Play" onclick="'+java'+"><br>';
    
     }
    
    }
    </script>
    
    
    
    
    
    
    
    
    
    
    
    
    </head>
    <body>
    <?
    
    
    
    
    echo"<center>Welcome $displayname";
    
    
    
    
    
    echo"<table><tr><td width='500' colspan=2><br><div id='playing'></div>";
    
    echo"
    <div id='playing'></div>
    <div id='music1'>
    <object width='200' height='45' 
    classid='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6'
    type='application/x-oleobject'>
    <param name='URL' value=''>
    <param name='AutoStart' VALUE='True'>
    <param name='uiMode' value='full'>
    <embed type='application/x-mplayer2'
    src=''
    ShowControls='1'
    width='200'
    height='45'>
    </embed>
    </object>
    </div>";
    
    echo"<div id='playlist'></div></td></tr>";
    
    //User has no blogs
    
    echo"</table>";
    
    
    
    echo"<table><tr><td colspan=10>Listen To Friends Music</td></tr>";
    
    
    
    
    
    
    
    
    $data1 = mysql_query("SELECT * FROM friends WHERE user_id='$id' LIMIT 10") 
    or die(mysql_error()); 
    while($info1 = mysql_fetch_array( $data1 )) { 
    
    
    $friendid=$info1['friend_id'];
    
    $data = mysql_query("SELECT * FROM users WHERE user_id='$friendid'") 
    or die(mysql_error()); 
    while($info = mysql_fetch_array( $data )) {
    
     
     $display=$info['display_name'];
     $photo=$info['default_photo'];
     $online=$info['online'];
    
    
    
    
    ?><td valign=top><center><a href='#' style="text-decoration:none;" onclick="changemusic('<? echo"$friendid";?>');">
    <?
    echo "<font color='blue'>$display<br>";
    
    Print "<img src='$photo' height='75' width='75' border='0'></a>"; 
    //display if user is online
    if ($online=='0') {
    echo"</font></td>";
    }
    else
    {
    echo "<br><img src='http://www.friendshideout.com/images/online.gif'></font></td>";
    }
    }
    
    }
    here is loadxmldoc.js
    Code:
    function loadXMLDoc(dname)
    {
    var xmlDoc;
    // code for IE
    if (window.ActiveXObject)
    {
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    }
    // code for Mozilla, Firefox, Opera, etc.
    else if (document.implementation && document.implementation.createDocument)
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
    else
    {
    alert('Your browser cannot handle this script');
    }
    xmlDoc.async=false;
    xmlDoc.load(dname);
    return(xmlDoc);
    }
    and changemusic.php:

    (this is where the value for java comes from)
    Code:
    $xml = '<?xml version="1.0" ?><root>';
    $data2 = mysql_query("SELECT * FROM music WHERE user_id='$userid' ORDER BY artist ASC") 
    or die(mysql_error()); 
    while($info2 = mysql_fetch_array( $data2 )) {
    
    
    
    
    //Pull data from database about that user
    
    $songid="".$info2['song_id'] . "";
    $source="".$info2['source'] . "";
    $artist="".$info2['artist'] . "";
    $title="".$info2['title'] . "";
    
    
    
    //Display 5 most recent blogs
    
    $xml .= '<song id="' . $songid . '">';
    $xml .= "<artist>" . $artist . "</artist>";
    $xml .= "<java>song('" . $source . "','" . $artist . " - " . $title . "')</java>";
    $xml .= '<title>' . $title . '</title>';
    $xml .= '<source>' . $source . '</source>';
    $xml .= '</song>';
    
    
    }
    $xml .= '</root>';
    echo $xml;
    That is all code related to that page. Hope this helps

  8. #8
    Join Date
    Mar 2005
    Location
    SE PA USA
    Posts
    30,495
    Thanks
    82
    Thanked 3,449 Times in 3,410 Posts
    Blog Entries
    12

    Default

    Why do I have to reset my clock to log on?
    - John
    ________________________

    Show Additional Thanks: International Rescue Committee - Donate or: The Ocean Conservancy - Donate or: PayPal - Donate

  9. #9
    Join Date
    Dec 2006
    Posts
    6
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    don't worry about that it is just something i was working on, but stopped, just login via this link:

    http://www.music.friendshideout.com/desktopplayer.php

  10. #10
    Join Date
    Mar 2005
    Location
    SE PA USA
    Posts
    30,495
    Thanks
    82
    Thanked 3,449 Times in 3,410 Posts
    Blog Entries
    12

    Default

    Well, here is a bit of the source code of the page:

    Code:
    <script type="text/javascript" src="loadxmldoc.js"> 
    <script type="text/javascript">
    function nowplaying(who)
    {
    document.getElementById("playing").innerHTML='<font color="blue"><h4>Now Playing '+who;
    		
    	
    }
    
    function song(what,who){
    document.getElementById("music1").innerHTML='<object id="mediaplayer1" width="200" height="45" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" type="application/x-oleobject"><param name="URL" value="'+what+'"><param name="AutoStart" VALUE="True"><param name="uiMode" value="full"><embed type="application/x-mplayer2" src="'+what+'" ShowControls="1" AutoStart="1" width="200" height="45"></embed></object>';
    nowplaying(who);
    return false;
    }
    
    
    
    
    
    </script>
    As you can see, you have nested opening script tags. You must close one script tag before opening another. As a result, song() is undefined. There may be other problems but, you need to close that first tag before opening the next:

    Code:
    <script type="text/javascript" src="loadxmldoc.js"></script> 
    <script type="text/javascript">
    function nowplaying(who)
    {
    document.getElementById("playing").innerHTML='<font color="blue"><h4>Now Playing '+who; . . .
    That's the error you are getting 'object expected'. A function is an object.
    - John
    ________________________

    Show Additional Thanks: International Rescue Committee - Donate or: The Ocean Conservancy - Donate or: PayPal - Donate

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •