If you can not load JS code in the (Master)Page, JSLink, or Custom Actions...
Then place the code inside the ListItem with JavaScript in a Calculated Column,
Here are some examples to get you started: https://www.365csi.nl/vm365com/#/Create/
I adapted one of the top of my head, have NOT tested it
in a View (and a View only!) this Calculated Column Formula will display a Button for each ListItem
="<button onclick=""{event.stopPropagation();"
& " var context=new SP.ClientContext.get_current();"
& " var list=context.get_web().get_lists().getById(SP.ListOperation.Selection.getSelectedList());"
& " var item=list.getItemById( GetAncestor(this,'TR').id.split(',')[1] );"
& " context.load(item);"
& " item.set_item('Status', 'Approved');"
& " item.update();"
& " context.executeQueryAsync("
& " Function.createDelegate(this, function(){"
& " AJAXRefreshView({currentCtx:ctx,csrAjaxRefresh:true},1);"
& " }));"
& " }"">Approve</button>"
Disclaimer:
It is a PITA to debug Calculated Columns. Because you don't get feedback until you save a Formula (with an undescriptive message) and you end up having to click multiple times to get back to your Formula.
I have written a small 'CalcMaster' bookmarklet which hooks into the formula-editor and does a save of the Formula on every keypress; giving immediate feedback.
https://github.com/Danny-Engelman/CalcMaster