SharePoint Edit Control Block (ECB) menu or Custom Action Menu In ListItem and Site:
<script
  language="javascript"
  type="text/javascript"
  src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"
></script>
<script language="javascript" type="text/javascript">
  $(document).ready(function () {
    SP.SOD.executeFunc("sp.js", "SP.ClientContext", AddCustomUserActionToECB);
    SP.SOD.executeFunc("sp.js", "SP.ClientContext", ModifyUserCustomAction);
    SP.SOD.executeFunc("sp.js", "SP.ClientContext", DeleteUserCustomAction);
    SP.SOD.executeFunc("sp.js", "SP.ClientContext", CreateUserCustomActionSite);
  });
  function AddCustomUserActionToECB() {
    var clientContext = new SP.ClientContext();
    var oWeb = clientContext.get_web();
    var oList = oWeb.get_lists().getByTitle("testlist");
    var userCustomActionColl = oList.get_userCustomActions();
    var oUserCustomAction = userCustomActionColl.add();
    oUserCustomAction.set_location("EditControlBlock");
    oUserCustomAction.set_sequence(100);
    oUserCustomAction.set_title("Click Here");
    oUserCustomAction.set_url(
      "/sites/pub/Pages/Finance.aspx?ListId={ListId}&ItemId={ItemId}&ItemUrl={ItemUrl}"
    );
    oUserCustomAction.update();
    clientContext.load(userCustomActionColl);
    clientContext.executeQueryAsync(QuerySuccess, QueryFailure);
  }
  function QuerySuccess() {
    console.log("Custom Action added to ECB menu.");
  }
  function QueryFailure() {
    console.log("Request failed - " + args.get_message());
  }
  function ModifyUserCustomAction() {
    var ctx = new SP.ClientContext.get_current();
    var web = ctx.get_web();
    var list = web.get_lists().getByTitle("testlist");
    var CustomActionColl = list.get_userCustomActions();
    ctx.load(list, "UserCustomActions", "Title");
    ctx.executeQueryAsync(
      function () {
        var customActionEnum = CustomActionColl.getEnumerator();
        while (customActionEnum.moveNext()) {
          var custAction = customActionEnum.get_current();
          if (custAction.get_title() == "Click Here") {
            custAction.set_title("Click Here new");
            custAction.update();
            ctx.load(custAction);
            ctx.executeQueryAsync(
              function () {
                alert(
                  "Custom action modified successfully for " + list.get_title()
                );
              },
              function (a, s) {
                alert("Error " + a.get_message());
              }
            );
          }
        }
      },
      function (a, s) {
        alert("Error " + a.get_message());
      }
    );
  }
  function DeleteUserCustomAction() {
    var ctx = new SP.ClientContext.get_current();
    var web = ctx.get_web();
    var list = web.get_lists().getByTitle("testlist");
    var CustomActionColl = list.get_userCustomActions();
    ctx.load(list, "UserCustomActions", "Title");
    ctx.executeQueryAsync(
      function () {
        var customActionEnum = CustomActionColl.getEnumerator();
        while (customActionEnum.moveNext()) {
          var custAction = customActionEnum.get_current();
          if (custAction.get_title() == "Click Here") {
            custAction.deleteObject();
            ctx.load(custAction);
            ctx.executeQueryAsync(
              function () {
                alert(
                  "Custom action deleted successfully for " + list.get_title()
                );
              },
              function (s, a) {
                alert("Error " + a.get_message());
              }
            );
          }
        }
      },
      function (a, s) {
        alert("Error " + a.get_message());
      }
    );
    function CreateUserCustomActionSite() {
      var ctx = new SP.ClientContext.get_current();
      var web = ctx.get_web();
      var CustomActionColl = web.get_userCustomActions();
      var custAction = CustomActionColl.add();
      custAction.set_location("Microsoft.SharePoint.StandardMenu");
      custAction.set_group("SiteActions");
      custAction.set_sequence(101);
      custAction.set_title("site custom action");
      custAction.set_description("Description for custom action.");
      custAction.update();
      ctx.load(web, "Title", "UserCustomActions");
      ctx.executeQueryAsync(
        function () {
          alert("Custom action created successfully for " + web.get_title());
        },
        function (sender, args) {
          alert("Error " + args.get_message());
        }
      );
    }
  }
</script>
<input type="button" value="Create User CustomAction for list" id="create" 
    onclick="CreateUserCustomActionList()" /></br ></br >
<input type="button" value="Delete User CustomAction for list" id="Delete" 
    onclick="DeleteUserCustomAction()" /></br ></br >
<input type="button" value="Modify User CustomAction for list" id="Modify" 
    onclick="ModifyUserCustomAction()" /></br ></br >
<input type="button" value="Create User CustomAction for site" id="Create" 
    onclick="CreateUserCustomActionSite()" /></br ></br >
=========================================================
<html>
  <script language="javascript" type="text/javascript">   
    function ClearListItesm(itemID) {
      var ctx = new SP.ClientContext.get_current();
      var web = ctx.get_web();
      var oList = web.get_lists().getByTitle("testlist");
      this.oListItem = oList.getItemById(itemID);
      oListItem.set_item("address", "");
      oListItem.set_item("phone", "");
      oListItem.update();
      ctx.executeQueryAsync(QuerySuccess, QueryFailure);
    }
    function QuerySuccess() {   
        console.log("QuerySuccess");
    }
    function QueryFailure() {        
        console.log("QueryFailure" + args.get_message());
    }
    function getSelectedItemIDs() { 
        var items = SP.ListOperation.Selection.getSelectedItems(); 
        items.forEach(item => {
            console.log(item.id);
            ClearListItesm(item.id);
        });
        location.reload();
    }
  </script>
  <input type="button" value="delete" id="update" onclick="getSelectedItemIDs()"/></br>
</html>
=========================================================
 
 
 
 
