Janssen began his career at amateur club Vitesse Arnhem 1892 and played from 1995–1996 in the reserves of SBV Vitesse. After breaking through in several youth teams Janssen made his professional debut on 9 December 1998 in the first team against NAC Breda, which Vitesse won 2–0. Janssen came in as substitute in 90th minute to replace Marian Zeman. Janssen played 5 games that season for Vitesse. The next season Janssen made 17 appearances for Vitesse. In the 2000–2001 season Janssen became a starter for Vitesse and made 30 appearances, in which he scored once. In September Janssen broke his shin, he played 10 games total that season, and scored 1 goal.
Genk
For the 2003–2004 season Janssen was loaned to Genk in Belgium. He played 15 games for games and scored 2 goals before returning to Vitesse in January 2004.
Return to Vitesse
Janssen played another 16 games in 2004 in which he scored one goal. He played primarily on the wing in the following season. His leg operation was sometimes troubling him, nevertheless he made 28 appearances in which he scored 8 goals. In the 2005–2006 season he played 30 games for Vitesse and scored 7 goals. Janssen's good performance at Vitesse was not unseen, as he received an invitation for the Dutch national football team for a friendly game against Ecuador on 1 March 2006. However, Janssen could not play, due to surgery on his tonsils. Janssen remained a regular starter for Vitesse in the following season, and was again selected to play for Oranje. This time he was able to play and made his debut for Oranje in a friendly against Ireland. He came in the 83rd minute for Stijn Schaars. On 2 September 2006, Janssen started for Oranje in a European Championship qualifier against Luxembourg. Janssen made only 22 appearances for Vitesse that season, due to injuries and suspensions. Vitesse trainer Aad de Mos told Janssen he could search for another club, despite an existing contract until 2009. During the 2007–2008 season, Janssen once again got injured, this time for several months. He returned playing in late 2007.
In mid-April 2008 FC Twente announcing the signing Janssen for the upcoming season on a contract until 2012. The transfer fee was approximately worth €1.5 million. In November 2009 Janssen was suspended by Twente for two months, after a drunk-driving accident. One of his passengers, former professional goalkeeper Kevin Moeliker, ended up in hospital where he was kept in a coma for several days. He lost one of his ears in the accident. Janssen won the Eredivisie that year with FC Twente. In July Janssen was invited by van Marwijk to play a friendly against Ukraine. In the 2010–11 season Janssen had his best season up to that point. He won the Johan Cruijff Schaal and the KNVB Cup with FC Twente. He scored 20 goals in 46 appearances, which made him club top scorer, among them some important goals for Twente like against Internazionale, Werder Bremen, Ajax and PSV. He was also voted best player of the Eredivisie of the season 2010–11.
Ajax
On 23 May 2011, Ajax and Twente agreed on a transfer of Janssen to Ajax. The transfer fee was worth €3.2 million. Janssen signed a contract with Ajax for two years and was handed the number 16 shirt, previously worn by Luis Suárez. His first couple of matches for Ajax were not very successful, as coach Frank de Boer decided that Janssen had to play as a defensive midfielder, which was not Janssen's best position. After he was playing in a more attacking position, Janssen became very important in achieving the league victory in 2012.
Second return to Vitesse
Janssen wanted to leave Ajax, after he had heard from Frank de Boer that he would be playing less matches in the coming season. He refused to play a role as substitute. On 27 August 2012, Janssen returned to Vitesse for a fee of approximately 600,000 euro's.
End of active football career
After suffering from different injuries of which the latest involved a meniscus operation, Janssen on 4 March 2014 announced that he would immediately end his active football career and that he would pursue a career with Vitesse as a scout for youth players and specialist trainer.