درود ،
برای اینکار دو تا کار می تونید انجام بدید یکی استفاده از متغییر برای مشخص کردن باز بودن یا نبودن منو و اون کی یهم با widthOffset
ولی دلیل اینکه نمی تونید از این کدتون استفاده کنید اینه که style.width مقداری رو برمی گردونه که یا به صورت اینلاین مشخص شده یا اینکه با style.width = n + "px"
به خاطر همین هم بار اول اجرا نمی شه ولی بار دوم درست کار می کنه درواقع همیشه درست کار می کنه ولی بار اول چون به صورت اینلاین یا با style.width براش تعریف نشده style.width مقدار خالی رو برمی گردونه و نه صفر رو به خاطر همین کد های داخل بلاک else اجرا می شه که width رو صفر می کنه و حالا بار دوم که کلیک می کنید چون با style.width بهش مقدار صفر پیکسل رو دادید شرطتتون اونطوری که می خواین اجرا می شه
حالا دو روشی که گفتم اینطوریه :
var open = false;
function openMenu(){
if(open){
document.querySelector("#menu").style.width = "0px";
open = false;
}
else{
document.querySelector("#menu").style.width = "100px";
open = true;
}
}
روش دوم :
function openMenu(){
if(document.querySelector("#menu").offsetWidth == 100){
document.querySelector("#menu").style.width = "0px";
}
else{
document.querySelector("#menu").style.width = "100px";
}
}
موفق باشید