You have to receive ether in contract while sending ether from web3js. You must have **payable** function to receive an ether. Lets see example below : 

In Web3js :   

    your_contractInstance.yourReceiverFunction(     
                 your_input_data, // this is optional for sending ether. You can send ether without passing this input variable. 
                {  
                from:   web3.eth.defaultAccount,  
                to:     your_contract_address,  
                value:  web3.toWei(1, "ether")              
        });    

 

In solidity :

     function yourReceiverFunction(datatypes your_input_data)  
           payable   
           public {  
        //do anything here with your input data 
        // to receive ether it is not necessary to be any input variable , you    just
        //need to send ether from web3 and receive here. 
        //the key point here is to just receive ether and use it   
        //msg.value holds the ether that sends from web3 in wei.
            
      uint myethervalue = msg.value;      
        } 
Take a refrence of this example.