DominikAngerer
DominikAngerer

Reputation: 6530

Function not called via javascript in href

I used a code that I found in the web and then changed a little thing:

<script type="text/javascript">
    var foodList = [];

    function addToFood (addFood) {
        alert(addFood);
        //foodList.push(addFood);
        //for (i = 0; i < foodList.length; i++) {
        //    var newFood = "<a href='#' onClick='removeRecord(" + i + ");'>X</a> " + foodList[i] + " <br>";
        //};
        //document.getElementById('foods').innerHTML += newFood;
    }
</script>

At this moment I only want to alert the parameter on addToFood. The function should be called:

echo "<a href='javascript:addToFood(". $zeile1['TITLE'] .");' class='band-head'>Add</a>";

this line shows how I add an <a> with the javascript in the href. The php render the right line but the addToFood is never called.

Have a look at the online Demo: http://anthraxx.sytes.net/ maybe it can help you more then me. The error I get via Google Chrome: Uncaught SyntaxError: Unexpected identifier But just can't figure that unexpected identifier out.

Thanks

Upvotes: 0

Views: 149

Answers (5)

Codrutz Codrutz
Codrutz Codrutz

Reputation: 480

Replace :

echo "<a href='javascript:addToFood(". $zeile1['TITLE'] .");' class='band-head'>Add</a>";

With:

echo "<a href='javascript:addToFood(\"". $zeile1['TITLE'] ."\");' class='band-head'>Add</a>";

Upvotes: 1

try this

    echo '<a href="javascript:addToFood(\''.$zeile1['TITLE'].'\');" class="band-head">Add</a>';

Upvotes: 1

Mandeep Singh
Mandeep Singh

Reputation: 1003

You need to escape the $zeile1['TITLE'], thats true and you can do that by using following line -

    echo "<a href='javascript:addToFood(\"". $zeile1['TITLE'] ."\");' class='band-head'>Add</a>";

This is working.

Upvotes: 1

Mahmoud.Eskandari
Mahmoud.Eskandari

Reputation: 1478

Just scope your vaiable between ' ' or " " ,When you don't scope String's ,javascript read it like Var.

Upvotes: 1

Eric
Eric

Reputation: 18922

You need to wrap the $zeile1['TITLE'] inside a string, as such:

echo "<a href='javascript:addToFood(\"". $zeile1['TITLE'] ."\");' class='band-head'>Add</a>";

You can see that I added escaped quotes \" after the opening parenthesis, and before the ending one, in the JS-call. Otherwise it will try to pass an variable to the function, instead of a string.

Why escaped? That is because you are echo:ing it with PHP. If I didn't escape the quote, the PHP would interpret it as I was ending the string, which is not what we want. I want to put the quotes in there as inline-code.

Upvotes: 4

Related Questions