单击时更改 CSS 属性

IT技术 javascript jquery css jquery-ui onclick
2021-02-27 20:33:51

我试图在单击另一个元素时更改一个元素的 CSS。我已经搜索了很多,但没有什么是完美的。目前我正在使用下面的代码,但它不起作用。谁能告诉我我错过了什么?

<div id="foo">hello world!</div>
<img src="zoom.png" onclick="myFunction()" />
function myFunction() {
    document.getElementById('foo').style.cssText = 'background-color: red; color: white; font-size: 44px';
}
6个回答

首先,使用on*属性来添加事件处理程序是一种非常过时的实现你想要的方式。当您使用 jQuery 标记您的问题时,这是一个 jQuery 实现:

<div id="foo">hello world!</div>
<img src="zoom.png" id="image" />
$('#image').click(function() {
    $('#foo').css({
        'background-color': 'red',
        'color': 'white',
        'font-size': '44px'
    });
});

更有效的方法是将这些样式放入一个类中,然后在单击时添加该类,如下所示:

$('#image').click(function() {
  $('#foo').addClass('myClass');
});
.myClass {
  background-color: red;
  color: white;
  font-size: 44px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div id="foo">hello world!</div>
<img src="https://i.imgur.com/9zbkKVz.png?1" id="image" />

对于需要它的人,这是上述内容的简单 Javascript 实现:

document.querySelector('#image').addEventListener('click', () => {
  document.querySelector('#foo').classList.add('myClass');
}); 
.myClass {
  background-color: red;
  color: white;
  font-size: 44px;
}
<div id="foo">hello world!</div>
<img src="https://i.imgur.com/9zbkKVz.png?1" id="image" />

javascript 代码可以比 jquery 更好
2021-04-21 20:33:51
这并没有回答 OP 的问题,即为什么他们的代码不起作用。
2021-05-01 20:33:51
这个答案使用 jQuery,但问题是使用普通的 Javascript。这可能就是为什么它也让一些尝试使用它的人感到困惑的原因。
2021-05-02 20:33:51
@RobG 那是因为 OP 中没有足够的信息来诊断问题。OP 给出的示例非常好(jsfiddle.net/k9rL517m)。我的第一个假设是myFunction()没有在onclick事件属性的范围内声明,即。不在window, 但这只是一个假设
2021-05-15 20:33:51
@orrd OP 在问题中标记了 jQuery,我说这是一个解决方案的 jQuery 实现。究竟是谁被它迷惑了?我看到没有评论要求澄清?
2021-05-20 20:33:51

试试这个:

CSS

.style1{
    background-color:red;
    color:white;
    font-size:44px;
}

HTML

<div id="foo">hello world!</div>
<img src="zoom.png" onclick="myFunction()" />

Javascript

function myFunction()
{
    document.getElementById('foo').setAttribute("class", "style1");
}
    <script>
        function change_css(){
            document.getElementById('result').style.cssText = 'padding:20px; background-color:#b2b2ff; color:#0c0800; border:1px solid #0c0800; font-size:22px;';
        }
    </script>

</head>

<body>
    <center>
        <div id="error"></div>
        <center>
            <div id="result"><h2> Javascript Example On click Change Css style</h2></div>
            <button onclick="change_css();">Check</button><br />
        </center>
    </center>
</body>
这是最好和最简单的答案
2021-04-29 20:33:51

在你的代码中你没有使用 jquery,所以,如果你想使用它,你需要像......

$('#foo').css({'background-color' : 'red', 'color' : 'white', 'font-size' : '44px'});

http://api.jquery.com/css/

其他方式,如果您不使用 jquery,则需要执行...

document.getElementById('foo').style = 'background-color: red; color: white; font-size: 44px';

使用 jquery,您可以这样做:

$('img').click(function(){
    $('#foo').css('background-color', 'red').css('color', 'white');
});

这适用于所有img标签,您应该id为它设置一个属性image,然后:

$('#image').click(function(){
    $('#foo').css('background-color', 'red').css('color', 'white');
});