I have a series of images/links that is calling a javascript function when the image is clicked. The code below works fine in regular html, but when I try to use this inside of a php echo it doesn't work.
echo "<a href='javascript:nfllogin('nflshow');' class='black' style='font-size:12px;'><img src='images/nfl-button-index.jpg' width='177' height='145' alt=''/></a> ";
Everything appears fine but when I click the image/link it doesn't pull up the div area I am expecting to see. How can I make this work?
3 Answers 3
You'll need to escape some of the quotes to avoid nested quotes of the same type.
echo "<a href='javascript:nfllogin(\"nflshow\");' class='black' style='font-size:12px;'><img src='images/nfl-button-index.jpg' width='177' height='145' alt=''/></a> ";
Will actually output:
<a href='javascript:nfllogin("nflshow");' class='black' style='font-size:12px;'><img src='images/nfl-button-index.jpg' width='177' height='145' alt=''/></a>
Which should work better for you.
1 Comment
echo '<a href="javascript:nfllogin(\"nflshow\");" class="black" style="font-size:12px;"><img src="images/nfl-button-index.jpg" width="177" height="145" alt=""/></a>';
a good practice in echoing html in php is use single quote to echo and double quotes thereafter. This save the stress of escaping string. Try the above pls.
if it doesnt respond change this: javascript:nfllogin("nflshow");
Comments
The first thing that hits my eyes is that there's a problem with single and double quotes.
echo '<a href="javascript:nfllogin(\'nflshow\');" ';
echo "class='black' style='font-size:12px;'><img src='images/nfl-button-index.jpg' width='177' height='145' alt=''/></a> ";
Since the JavaScript contains a single quote, you have to put the href into double quotes. I split the echo in two to avoid to escape quotes with backslashes.
To echo such big chunks of html, the heredoc syntax comes in handy too. This would look like:
echo <<<EOT
<a href="javascript:nfllogin(\'nflshow\');" class="black" style="font-size:12px;">
<img src="images/nfl-button-index.jpg" width="177" height="145" alt=""/>
</a>
EOT;
There are two advantages:
- There's no need to escape quotes
- As a consequence, you can indent your HTML code and use double quotes for the attributes. It's just a matter of clean code to quote all HTML code consistently with double quotes.
\""for one of the sets eg\""nflshow\""