Solved

get specific Data from xml field

Posted on 2014-03-24
2
306 Views
Last Modified: 2014-03-24
Ok I have a html page player image and xml file attached. What I need to solve this is to grab from the xml file a node called pitcher it's located in the beginning of the file I need  to grab Firstname and Lastname and ID that will be used for a head shot.
<Pitcher ID="1770" TeamID="007" FirstName="Kyle " Lastname="Farnsworth" Inning="6" Outs="1" Throws="R" BBats="S" AB="1" BF="1"/> if you can pull this name and headshot  player ID you have succeeded if like the page pulls Zack Wheeler not working right. Because there are 2 Pitcher's list Current pitcher after score then at the end of the xml pitchers a list of games pitchers.

here is the code Thanks EE

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<link rel="stylesheet" href="css/jquery-ui-1.8.9.customver1.css">
<style type="text/css">
.GCPBP {
    color: white;
}
#apDiv1 {
    position: absolute;
    width: 17px;
    height: 28px;
    z-index: 10;
    left: 218px;
    top: 368px;
}
#apDiv2 {
    position: absolute;
    width: 16px;
    height: 34px;
    z-index: 20;
    left: 197px;
    top: 368px;
}
#apDiv3 {
    position: absolute;
    width: 21px;
    height: 30px;
    z-index: 25;
    left: 197px;
    top: 308px;
}
#apDiv4 {
    position: absolute;
    width: 17px;
    height: 33px;
    z-index: 30;
    left: 289px;
    top: 295px;
}
#apDiv5 {
    position: absolute;
    width: 16px;
    height: 33px;
    z-index: 35;
    left: 320px;
    top: 303px;
}
#apDiv6 {
    position: absolute;
    width: 19px;
    height: 32px;
    z-index: 40;
    left: 225px;
    top: 276px;
}
#apDiv7 {
    position: absolute;
    width: 24px;
    height: 38px;
    z-index: 45;
    left: 173px;
    top: 261px;
}
#apDiv8 {
    position: absolute;
    width: 14px;
    height: 37px;
    z-index: 46;
    left: 136px;
    top: 268px;
}
#apDiv9 {
    position: absolute;
    width: 21px;
    height: 32px;
    z-index: 50;
    left: 99px;
    top: 282px;
}
#apDiv10 {
    position: absolute;
    width: 20px;
    height: 38px;
    z-index: 55;
    left: 67px;
    top: 290px;
}
#apDiv11 {
    position: absolute;
    width: 17px;
    height: 37px;
    z-index: 60;
    left: 321px;
    top: 254px;
}
#apDiv12 {
    position: absolute;
    width: 19px;
    height: 35px;
    z-index: 65;
    left: 205px;
    top: 235px;
}
#apDiv13 {
    position: absolute;
    width: 18px;
    height: 37px;
    z-index: 70;
    left: 69px;
    top: 244px;
}
#P,#C,#FB,#SB,#SS,#TB,#LF,#CF,#RF , #HPUmpire,#TBUmpire,#SBUmpire,#FBUmpire {
    /*border: 1px solid white;*/
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
 
<script type="text/javascript">
    var xmlPath = '.';//'/xml/mlb/scores/real';
  var xmlGameID = '41880';
  var srcFieldTeamLogo;
  //var playerImage;
var txtpitcher;
//var pitcherid;
  var intPosID = {
    'P': {
        pos: 'Pitcher',
        id: 0,
        name: 'unknown'
    },
    'C': {
        pos: 'Catcher',
        id: 0,
        name: 'unknown'
    },
    'FB': {
        pos: 'First Base',
        id: 0,
        name: 'unknown'
    },
    'SB': {
        pos: 'Second Base',
        id: 0,
        name: 'unknown'
    },
    'SS': {
        pos: 'ShortStop',
        id: 0,
        name: 'unknown'
    },
    'TB': {
        pos: 'Third Base',
        id: 0,
        name: 'unknown'
    },
    'LF': {
        pos: 'Left Field',
        id: 0,
        name: 'unknown'
    },
    'CF': {
        pos: 'Center Field',
        id: 0,
        name: 'unknown'
    },
    'RF': {
        pos: 'Right Field',
        id: 0,
        name: 'unknown'
    },
    'HPUmpire': {
        pos: 'Home Plate Umpire',
        id: 0,
        name: 'unknown'
    },
    'TBUmpire': {
        pos: 'Third Base Umpire',
        id: 0,
        name: 'unknown'
    },
    'SBUmpire': {
        pos: 'Second Base Umpire',
        id: 0,
        name: 'unknown'
    },
    'FBUmpire': {
        pos: 'First Base Umpire',
        id: 0,
        name: 'unknown'
    }
  };
 
 
stadiums = {
    "wrigley field":"wrigley.gif",
    "comerica park":"comerica.gif" ,
    "yankee stadium":"yankee.jpg" ,
    "shea stadium":"shea.jpg" ,
    "angel stadium of anaheim":"angel.jpg" ,
    "rangers ballpark in arlington":"angel.jpg" ,
    "at&t park":"attpark.jpg" ,
    "citizens bank park":"citizenballpark.jpg" ,
    "coors field":"coors.jpg" ,
    "busch stadium":"busch.jpg" ,
    "oriole park at camden yards":"camden_baltimore.jpg",
    "dodger stadium":"dodgers.jpg" ,
    "chase field":"chasefield.jpg" ,
    "tropicana field":"tropicana.jpg" ,
    "great american ball park":"greatamerican.jpg" ,
    "kauffman stadium":"kauffmanstadium.jpg" ,
    "mcafee coliseum":"mcafeecoliseum.jpg" ,
    "hubert h. humphrey metrodome":"metrodome.jpg" ,
    "metrodome":"metrodome.jpg" ,
    "miller park":"millerpark.jpg" ,
    "minute maid park":"minutemaid.jpg" ,
    "nationals park":"nationalspark.jpg" ,
    "petco park":"petcopark.jpg" ,
    "pnc park":"pncpark.jpg" ,
    "progressive field":"progressive.jpg" ,
    "rogers centre":"rogerscentre.jpg" ,
    "safeco field":"safecofield.jpg" ,
    "turner field":"turnerfield.jpg" ,
    "dolphin stadium":"dolphinstadium.jpg" ,
    "fenway park":"fenwaypark.jpg" ,
    "u.s. cellular field":"uscellularfield.jpg" ,
    "oakland-alameda county coliseum":"mcafeecoliseum.jpg",
    "marlins park":"marlins.jpg",
    "citi field":"citifield.jpg",
 
     "target field":"targetfield.jpg"
}; // no comma on the last
 
var homeTurf = {
    "minnesota":"target field",
  "philadelphia":"citizens bank park",
  "milwaukee":"miller park",
  "san francisco":"u.s. cellular field",
  "la angels":"angel stadium of anaheim",
  "tampa bay":"tropicana field",
  "chicago wsox":"u.s. cellular field",
  "oakland":"oakland-alameda county coliseum",
  "kansas city":"kauffman stadium",
  "los angeles":"dodger stadium",
  "san diego":"petco park",
  "boston":"fenway park",
  "seattle":"safeco field",
  "detroit":"comerica park",
  "atlanta":"turner field",
  "baltimore":"oriole park at camden yards",
  "miami":"marlins park",
  "pittsburgh":"pnc park",
  "ny mets":"citi field",
  "st. louis":"busch stadium",
  "houston":"minute maid park",
  "cleveland":"progressive field",
  "cincinnati":"great american ball park",
  "texas":"rangers ballpark in arlington",
  "toronto":"rogers centre",
  "chicago cubs":"wrigley field",
  "arizona":"chase field",
  "colorado":"coors field",
  "ny yankees":"yankee stadium",
  "washington":"nationals park"
};
 
$(document).ready(function(){
    $.ajax({
        type: "GET",
        url: xmlPath+"/"+xmlGameID+".xml",
 
        dataType: "xml",
        success: function(data){
            var d = $(data);
            var Play = d.find('Play');
            var Teams = $(data).find("Team");
 
            $.each(Teams,function(i,Team) {
 
 
                team=$(Team);
                var id = team.attr("ID").toLowerCase();
                var homeOrAway = team.attr("vh");
 
                $(homeOrAway=="H" ? '#imghometeam' : '#imgawayteam').attr('src', 'http://sportsnetwork.com/MLB/MLB/' + id + ".png");
 
                var name = team.attr("name").toLowerCase();
 
                if (homeOrAway=="H") {
                    var stadium_location = stadiums[homeTurf[name]]; // or have
                    var url = "http://images.sportsnetwork.com/mlb/attheballpark/stadiums/";
                    url = (stadium_location) ?url + stadium_location:"default.gif";
                    $("#imgStad").attr("src",url);
                }
 
                var loc = Play.attr('Location') ;
                //var locate = "Location" + $('#txtBallparkname').html(loc).toUpperCase;
                $('#txtBallparkname').html("Location " + loc.toUpperCase());
 
            });
        }
    });
 
    $('#P,#C,#FB,#SB,#SS,#TB,#LF,#CF,#RF').hover(function(){
        $('#playerImage').attr('src', 'http://images.sportsnetwork.com/MLB/attheballpark/players/'+intPosID[this.id].id+'.jpg');
        $('#PlayerName').html(intPosID[this.id].name);
        $('#PositionName').html(intPosID[this.id].pos);
    },function() {
        $('#playerImage').attr('src', 'http://sportsnetwork.com/gamecast/mlb/Images/blank.png');
        $('#PlayerName').html('&nbsp;');
        $('#PositionName').html('&nbsp;');
    });
 
    $('#HPUmpire,#TBUmpire,#SBUmpire,#FBUmpire').hover(function(){
        $('#playerImage').attr('src', 'http://images.sportsnetwork.com/MLB/attheballpark/umpires/'+intPosID[this.id].id+'.jpg');
        $('#PlayerName').html(intPosID[this.id].name);
        $('#PositionName').html(intPosID[this.id].pos);
    },function() {
        $('#playerImage').attr('src', 'http://sportsnetwork.com/gamecast/mlb/Images/blank.png');
        $('#PlayerName').html('&nbsp;');
        $('#PositionName').html('&nbsp;');
    });
 
});
 
 
function loadAll() {
 
    $.ajax({
        type: "GET",
        url: xmlPath+"/"+xmlGameID+".xml",
 
        dataType: "xml",
        success: function(data){
            var d = $(data);
            if (d.find('Play').attr("Status").toUpperCase() === "FINAL") {
                clearInterval(myVar);
            }
            var colNodes = d.find('Play').children();
 
            for (var i=0; i < colNodes.length; i++) {
                var objNode = colNodes[i];
                //document.getElementById("demo").innerHTML += '/'+objNode.nodeName;
                switch(objNode.nodeName) {
                    case 'Batter':
                        txtBatter = $(objNode).attr('FirstName') + ' ' + $(objNode).attr('Lastname');
                        intBatter = $(objNode).attr('ID');
 
                        intBatterSave = intBatter;
 
                        break;
                    case 'Pitcher':
                        txtPitcher = $(objNode).attr('FirstName') + ' ' + $(objNode).attr('Lastname');
                        intPitcher = $(objNode).attr('ID');
 
                        break;
 
                }
            }
    //  if (d.find('Play').attr("NoPlay").toUpperCase() === '1') {
     //   $('#txtBallparkname').html("Rain Delay");
 
     //   clearInterval(myVar);
    //  }
      // if (d.find('Play').attr("NoPlay").toUpperCase() === '0') {
 
 
      //  setInterval(myVar);
     // }
            for (var posItem in intPosID) {
                posItem.updated = false;
            }
 
            $(d.find('Pitcher')).each(function(i, nodePlayer){ // always 1!
                nodePlayer = $(nodePlayer);
                var posItem = intPosID['P'];
                if (posItem) { // && !posItem.updated
                    posItem.id = nodePlayer.attr('ID');
                    posItem.name = nodePlayer.attr('FirstName') + ' ' + nodePlayer.attr('Lastname');
                    posItem.updated = true;
                    //tempCount++;
                }
            });
 
            $(d.find('Fielders')).find('Player').each(function(indexPlayer, nodePlayer){
                nodePlayer = $(nodePlayer);
                var posItem = intPosID[nodePlayer.attr('Pos').trim().replace('1B', 'FB').replace('2B', 'SB').replace('3B', 'TB')];
                if (posItem) {
                    posItem.id = nodePlayer.attr('ID');
                    posItem.name = nodePlayer.attr('FirstName') + ' ' + nodePlayer.attr('Lastname');
                    posItem.updated = true;
                } else {
                    //console.log('invalid player positem: ' + nodePlayer.attr('Pos'));
                }
            });
            $(d.find('Umpires')).find('*').each(function(indexUmpire, nodeUmpire){
                nodeUmpire = $(nodeUmpire);
                var posItem = intPosID[nodeUmpire.prop('nodeName')];
                if (posItem) {
                    posItem.id = nodeUmpire.attr('ID');
                    posItem.name = nodeUmpire.text();
                    posItem.updated = true;
                } else {
                    //console.log('invalid umpire positem: ' + nodeUmpire.prop('nodeName'));
                }
            });
 
            /*
            var tempCount = 0;
            for (var posItem in intPosID) {
                if (!posItem.updated) {
                    tempCount++;
                }
            }
            $('#txtBallparkname').html('temp debug: ' + tempCount + ' items NOT updated');
            */
 
            var tempCount = 0;
 
            var intPitcherTeamID = d.find('Pitcher').attr('TeamID');
            var intBatterTeamID = d.find('Batter').attr('TeamID');
            $('#imgawayteam').attr('src', 'http://images.sportsnetwork.com/MLB/attheballpark/MLB/' +intBatterTeamID + ".png");
            $('#imghometeam').attr('src', 'http://images.sportsnetwork.com/MLB/attheballpark/MLB/' + intPitcherTeamID + ".png");
            // BattersSameTeamAsPitcher
            $(d.find('Batters[TeamID="' + intPitcherTeamID + '"]')).find('Player').each(function(i, nodePlayer){
                nodePlayer = $(nodePlayer);
                var posPlayer = nodePlayer.attr('Pos').replace('1B', 'FB').replace('2B', 'SB').replace('3B', 'TB');
                var posItem = intPosID[posPlayer];
                if (posItem) { // && !posItem.updated
                    posItem.id = nodePlayer.attr('ID');
                    posItem.name = nodePlayer.attr('FirstName') + ' ' + nodePlayer.attr('Lastname');
                    posItem.updated = true;
                    tempCount++;
                }
            });
            //$('#txtBallparkname').html('temp debug: ' + tempCount + ' items extra updated!');
 
 
            var Fielder = $(d.find('Fielders').find('Player:first'));
            var Team = $(d.find("Team[ID='" + Fielder.attr('TeamID') + "']"));
            var unfrm = Team.attr('Uniform'); // +'.gif';
            $('#P,#C,#FB,#SB,#SS,#TB,#LF,#CF,#RF').attr('src', 'http://images.sportsnetwork.com/MLB/attheballpark/pbp_logos/'+unfrm);
            //srcFieldTeamLogo = 'http://images.sportsnetwork.com/MLB/attheballpark/pbp_logos/'+Team.attr('ID')+'.png';
            //var d = $(data);
            //var Pitchers = $(d.find('Batters').find('Player:first'));
            ///var Team = $(d.find("Team[ID='" + Batter.attr('TeamID') + "']"));
            //var unfrm = Team.attr('Uniform');
            //var bat = Batter.attr("Bats");
 
            //if (srcFieldTeamLogo != "") $('#srcFieldTeamLogo').attr('src', srcFieldTeamLogo);
 
        }
    })
}
</script>
</head>
 
<body bgcolor="#000000" class="GCPBP">
 
<table width="100%" border="0">
  <tr>
    <td><strong class="GCPBP" id="txtBallparkname">BallParkname</strong></td>
  </tr>

</table>
<table width="400" border="0">
  <tr>
    <td><table width="400" border="0">
      <tr>
        <td width="67" rowspan="4"><p><img src="BBLogo.png" alt="" name="imghometeam" width="78" height="76" id="imghometeam"></p></td>
        <td width="81" rowspan="4"><img src="Images/Blank.png" alt="" width="73" height="75" id="playerImage"></td>
        <td width="156"><Pitcher ID="1770" TeamID="007" FirstName="Kyle " Lastname="Farnsworth" Inning="6" Outs="1" Throws="R" BBats="S" AB="1" BF="1"/>&nbsp;</td>
        <td width="78" rowspan="4"><img src="BBLogo.png" name="imgawayteam" width="78" height="76" id="imgawayteam"></td>
      </tr>
      <tr>
        <td class="PlayerName"><div align="center" id="PlayerName">Player Name</div></td>
      </tr>
      <tr>
        <td><div align="center" class="GCPBP"></div></td>
      </tr>
      <tr>
        <td class="PositionName"><div align="center" id="PositionName">Position Name</div></td>
      </tr>
    </table>
      <table width="400" border="0">
        <tr>
          <td><div id="apDiv1"><img src="Images/Uniforms/umpire.gif" alt="" name="HPUmpire" width="11" height="30" id="HPUmpire"></div>            <div id="apDiv2"><img src="Images/Uniforms/040_unif_awayold.gif" alt="" name="C" width="11" height="30" id="C"></div>            <div id="apDiv6"><img src="Images/Uniforms/040_unif_awayold.gif" alt="" name="SB" width="11" height="30" id="SB"></div>
            <div id="apDiv7"><img src="Images/Uniforms/umpire.gif" alt="" name="SBUmpire" width="11" height="30" id="SBUmpire"></div>
            <div id="apDiv8"><img src="Images/Uniforms/040_unif_awayold.gif" alt="" name="SS" width="11" height="30" id="SS"></div>
            <div id="apDiv9"><img src="Images/Uniforms/040_unif_awayold.gif" alt="" name="TB" width="11" height="30" id="TB"></div>
            <div id="apDiv10"><img src="Images/Uniforms/umpire.gif" alt="" name="TBUmpire" width="11" height="30" id="TBUmpire"></div>
            <div id="apDiv12"><img src="Images/Uniforms/040_unif_awayold.gif" alt="" name="CF" width="11" height="30" id="CF"></div>
            <div id="apDiv13"><img src="Images/Uniforms/040_unif_homeold.gif" alt="" name="RF" width="11" height="30" id="RF"></div>
            <img src="http://images.sportsnetwork.com/mlb/attheballpark/stadiums/default.gif" name="imgStad" width="390" height="273" id="imgStad">
            <div id="apDiv11"><img src="Images/Uniforms/040_unif_awayold.gif" alt="" name="LF" width="11" height="30" id="LF"></div>
            <div id="apDiv5"><img src="Images/Uniforms/umpire.gif" alt="" name="FBUmpire" width="11" height="30" id="FBUmpire"></div>
            <div id="apDiv4"><img src="Images/Uniforms/040_unif_awayold.gif" alt="" name="FB" width="11" height="30" id="FB"></div>
            <div id="apDiv3"><img src="Images/Uniforms/040_unif_awayold.gif" alt="" name="P" width="11" height="30" id="P"></div>
          </td>
        </tr>
      </table>
      <p align="center">&nbsp;</p>
   </td>
  </tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="GCPBP">&nbsp; </p>
<script>
var myVar = setInterval(myTimer,2000);
 
function myTimer()
{
    //var d=new Date();
    //var t=d.toLocaleTimeString();
    //document.getElementById("demo").innerHTML=t;
    loadAll();
}
  </script>
</body>
</html>

Open in new window




This is the 2nd pitchers list not current pitcher this will pull Zack Wheller as pitcher and not current pitcher
<Pitcher ID="1770" TeamID="007" FirstName="Kyle " Lastname="Farnsworth" Inning="6" Outs="1" Throws="R" BBats="S" AB="1" BF="1"/>

 $(d.find('Pitcher')).each(function(i, nodePlayer){ // always 1!
                nodePlayer = $(nodePlayer);
                var posItem = intPosID['P'];
                if (posItem) { // && !posItem.updated
                    posItem.id = nodePlayer.attr('ID');
                    posItem.name = nodePlayer.attr('FirstName') + ' ' + nodePlayer.attr('Lastname');
                    posItem.updated = true;
                    //tempCount++;
                }
            });

Open in new window

41880.XML
fieldplayers.html
040-unif-home.gif
0
Comment
Question by:powerztom
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 35

Accepted Solution

by:
Robert Schutt earned 500 total points
ID: 39950775
This was a tough one! Although I must admit it was partly because I just didn't understand your explanation in the previous question.

I removed lines 372 - 438 and added this:
            $(d.find('Pitcher')).each(function(i, nodePlayer){ // always 1!
                nodePlayer = $(nodePlayer);
                var posItem = intPosID['P'];
                if (posItem) {
                    posItem.id = nodePlayer.attr('ID');
                    posItem.name = nodePlayer.attr('FirstName') + ' ' + nodePlayer.attr('Lastname');
                    console.log('Pitcher id: ' + posItem.id + ', pos: P, name: ' + posItem.name);
                }
            });

            $(d.find('Fielders')).find('Player:not([Pos^="P"])').each(function(indexPlayer, nodePlayer){
                nodePlayer = $(nodePlayer);
                var posItem = intPosID[nodePlayer.attr('Pos').trim().replace('1B', 'FB').replace('2B', 'SB').replace('3B', 'TB')];
                if (posItem) {
                    posItem.id = nodePlayer.attr('ID');
                    posItem.name = nodePlayer.attr('FirstName') + ' ' + nodePlayer.attr('Lastname');
                    console.log('Fielder id: ' + posItem.id + ', pos: ' + nodePlayer.attr('Pos').trim() + ', name: ' + posItem.name);
                }
            });

            $(d.find('Umpires')).find('*').each(function(indexUmpire, nodeUmpire){
                nodeUmpire = $(nodeUmpire);
                var posItem = intPosID[nodeUmpire.prop('nodeName')];
                if (posItem) {
                    posItem.id = nodeUmpire.attr('ID');
                    posItem.name = nodeUmpire.text();
                    console.log('Umpire id: ' + posItem.id + ', pos: ' + nodeUmpire.prop('nodeName') + ', name: ' + posItem.name);
                }
            });

            var intPitcherTeamID = d.find('Pitcher').attr('TeamID');
            var intBatterTeamID = d.find('Batter').attr('TeamID');
            $('#imgawayteam').attr('src', 'http://images.sportsnetwork.com/MLB/attheballpark/MLB/' +intBatterTeamID + ".png");
            $('#imghometeam').attr('src', 'http://images.sportsnetwork.com/MLB/attheballpark/MLB/' + intPitcherTeamID + ".png");

            $(d.find('Batters[TeamID="' + intPitcherTeamID + '"]')).find('Player:not([Pos="P"])').each(function(i, nodePlayer){
                nodePlayer = $(nodePlayer);
                var posPlayer = nodePlayer.attr('Pos').replace('1B', 'FB').replace('2B', 'SB').replace('3B', 'TB');
                var posItem = intPosID[posPlayer];
                if (posItem) {
                    posItem.id = nodePlayer.attr('ID');
                    posItem.name = nodePlayer.attr('FirstName') + ' ' + nodePlayer.attr('Lastname');
                    console.log('Batter id: ' + posItem.id + ', pos: "' + nodePlayer.attr('Pos') + '", name: ' + posItem.name);
                }
            });

Open in new window

I removed the 'updated' flag because it wasn't used anymore (only for some logging before). I added some logging to the console to see the player nodes being found (I left it in because you should have a look at it in the debugger, when you see the logic, you can comment out those lines with "console.log(...)").

Player info is duplicated in several places in the xml file and that's why the other pitcher was being found! So now they are being excluded from the Fielders and Batters loops in the jQuery selectors using :not([Pos="P"])
0
 

Author Closing Comment

by:powerztom
ID: 39950908
Rob,

This is your birthday present to me. You never disappoint.Thank You.
0

Featured Post

Secure Your WordPress Site: 5 Essential Approaches

WordPress is the web's most popular CMS, but its dominance also makes it a target for attackers. Our eBook will show you how to:

Prevent costly exploits of core and plugin vulnerabilities
Repel automated attacks
Lock down your dashboard, secure your code, and protect your users

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many times as a report developer I've been asked to display normalized data such as three rows with values Jack, Joe, and Bob as a single comma-separated string such as 'Jack, Joe, Bob', and vice versa.  Here's how to do it. 
Finding original email is quite difficult due to their duplicates. From this article, you will come to know why multiple duplicates of same emails appear and how to delete duplicate emails from Outlook securely and instantly while vital emails remai…
In this tutorial viewers will learn how to style elements, such a divs, with a "drop shadow" effect using the CSS box-shadow property Start with a normal styled element, such as a div.: In the element's style, type the box shadow property: "box-shad…
The viewer will the learn the benefit of plain text editors and code an HTML5 based template for use in further tutorials.

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question