#javascript
#javascript
Вопрос:
Я просто пытаюсь напечатать hello world в консоли, поставив условие. Это не работает, я не знаю почему. Это работает должным образом вне условия. Но когда я пытаюсь напечатать сообщение, только если translateX равно 0px идентификатора item4. Если вы знаете причину, пожалуйста, помогите мне.
Мой код здесь:
item4 = document.getElementsByClassName('items')[3]
function leftarrow() {
// not working
if (item4.style.transform == 'translateX(0px)') {
console.log("Hellow World")
}
}
.items{
border: 2px solid red;
text-align: center;
width: 300px;
height: 300px;
position: absolute;
background-color: yellow;
transform: translateX(0px);
}
.contains{
border: 2px solid black;
width: 310px;
height: 310px;
}
#btn{
width: 100px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Slider</title>
</head>
<body>
<div id="screen" class="container">
<div id="main-div">
<button id="btn" onclick="leftarrow()">
print
</button>
<div class="contains">
<div id="item1" class="items">ItemBox 1</div>
<div id="item2" class="items">ItemBox 2</div>
<div id="item3" class="items">ItemBox 3</div>
<div id="item4" class="items">ItemBox 4</div>
</div>
</div>
</div>
</body>
<script src="index.js"></script>
</html>
Комментарии:
1. Взгляните на getComputedStyle
Ответ №1:
Вы можете использовать getComputedStyle
для получения transform
matrix
значений (например: "matrix(1, 0, 0, 1, 20, 0)"
). Разделите его и очистите, чтобы получить только значения. Затем проверьте, равно ли значение для x
(второе последнее значение [onlyVals.length - 2]
) указанному значению.
item4 = document.getElementsByClassName('items')[3]
function leftarrow() {
const transformMatrixVals = getComputedStyle(item4).transform.split(",");
const onlyVals = transformMatrixVals.map(v => v.replace(/D/g, ""));
const xVal = onlyVals[onlyVals.length - 2]; // 20
if (xVal === "20") {
console.log("Hello World");
}
}
leftarrow();
.items{
border: 2px solid red;
text-align: center;
width: 300px;
height: 300px;
position: absolute;
background-color: yellow;
transform: translateX(20px);
}
<div id="item1" class="items">ItemBox 1</div>
<div id="item2" class="items">ItemBox 2</div>
<div id="item3" class="items">ItemBox 3</div>
<div id="item4" class="items">ItemBox 4</div>