You can do something like that:
<script>
var targetListItem;
var listName="js";
var itemId=1;
ExecuteOrDelayUntilScriptLoaded(GetListItem, "sp.js");
function GetListItem(listName,itemId) {
var clientContext = new SP.ClientContext();
var targetList = clientContext.get_web().get_lists().getByTitle(listName);
targetListItem = targetList.getItemById(itemId);
clientContext.load(targetListItem, 'Title','zDate','Image','Body','URL');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var mytitle = targetListItem.get_item('Title');
var myDate = targetListItem.get_item('zDate');
var myImage = targetListItem.get_item('Image');
var myBody = targetListItem.get_item('Body');
var myURL = targetListItem.get_item('URL');
return("<div class='nb_news_wrap' style='display: none;'><article datetime='"+myDate+"'><header>"+mytitle+"</header><img src='"+myImage+"'/><section><span class='lcnb_author'>"+myDate+"</span>"+myBody+"</section><a href='"+myURL+"'class='lcnb_inline_link'>Read More</a></article></div>");
}
function onQueryFailed(sender, args) {
alert('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace());
}
</script>
You can add script editor and paste this code in and change the name of the fields to the exact names. The code is currently is returning the item with Id 1, but you can adjust that to return whatever you like and the name of the list in this example is js...also change that as well...
Let me know how it goes!!!