Building on this post, I would define a new function in the .bst file:
FUNCTION {doilink}
{ duplicate$ empty$
{ pop$ "" }
{ doi empty$
{ skip$ }
{ "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
if$
}
if$
}
Then you need to find how the journal information is printed in your .bst file (this depends on which particular .bst you are using). Just add a call to doilink before outputting the journal information. If you also want to remove the doi from the output, you also need to find the place in the .bst where this is printed and delete those lines. It is difficult to be more specific without knowing more about your particular bibliography configuration.
Note that a very good guide to BibTeX may be found here (or texdoc tamethebeast in a shell). There would also be biblatex solutions.
EDIT: Here is an example based on the plain.bst style file:
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
crossref missing$
{ journal emphasize doilink "journal" output.check
format.vol.num.pages output
format.date "year" output.check
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
I have just added the call to the doilink function at the proper place (and you also need to add doi in the ENTRY {...} fields description at the beginning of the .bst file.