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.