What is your car? So is the light actuallu because off an emissions error code? The light can be caused by a huge range of things - emissions, sensors out of range, misfires, and so on. Some errors are time dependent and only trigger the light if they are present for a period of time. This means if your mechanic clears the codes with a scan tool the light goes off and you think it's all fixed. But if the underlying issue is still there, the light comes on again after a couple of days. Bottom line - you absolutely need to know what error codes are stored that are triggering the light. If you don't have an OBD scan tool, swing past any mechanic or Auto electrician and they will scan it for you. These cars can do a range of weird things without a decent battery. If your battery is stuffed definitely replace it, even if it turns out to be unrelated to your other issues. No point trying to fix a tricky issue when something fundamental is clouding it. Good luck and let us know how you go!