【问题标题】:Cannot change css attribute via javascript function [duplicate]无法通过javascript函数更改css属性[重复]
【发布时间】:2017-01-16 02:27:21
【问题描述】:

这只是一个简单的 javascript 代码,用于更改显示或背景,或者只是看看我是否可以使用 javascript 更改 css 属性。

这是基于一个例子。

但由于某种原因,我无法使用自己定义的js函数更改属性。

HTML 代码

<div id="question"> testting javascript</div>
<button onclick="close()">Close</button>

JS 代码

function close(){
    document.getElementById("question").style.display = "none";
    document.getElementById('question').style.backgroundColor = "#f3f3f3";
}

The JSfiddle

完整代码

<div id="question"> testting javascript</div>
<button onclick="close()">Close</button>
<script>
function close(){
    document.getElementById("question").style.display = "none";
    document.getElementById('question').style.backgroundColor = "#f3f3f3";
}
</script>

【问题讨论】:

  • 你在$('document').ready(function(){});中使用了你的函数吗?
  • @LuizHenrique 那是 jQuery,OP 没有在任何地方引用 jQuery。
  • 呃,不是吗?因为这个例子没有使用那个
  • close 使用不同的名称 - 因为window.close 已经是一个函数 - jsfiddle.net/jaromanda/5oc62qbe/12
  • @JaromandaX 将 close() 更改为 closed() 但仍然无法正常工作

标签: javascript html css


【解决方案1】:

可能因 2 个原因而无法工作:

  1. JSFiddle 默认将所有 JavaScript 代码包装在一个匿名函数中,因此您的 close() 函数从不暴露于主作用域。
  2. 您选择了名称close,这是用于关闭窗口的现有 JavaScript 方法:window.close

下面的代码正在运行:

window.closeQuestion = function() {
  document.getElementById("question").style.display = "none";
  document.getElementById('question').style.backgroundColor = "#f3f3f3";
};

/*/ This is a way of having a full control over your JavaScript functions and events: /*/
document.getElementById('closeBtn').addEventListener('click', function() {
  closeQuestion();
});
#question {
  background : red;
}
<div id="question"> testting javascript</div>

<!-- This is lame: -->
<button onclick="closeQuestion()">Close</button>

<!-- This is better: -->
<button id="closeBtn">Close (better)</button>

无论如何,您都应该在 JavaScript 中处理事件。使用on* 属性是上个世纪。见addEventListener

【讨论】:

  • 谢谢。对于有经验的人来说,上个世纪是如此。但我刚刚开始学习 javascript,这就是为什么即使是最基本的也让我感到困惑的原因。 addEventListener 和 window.functionname
  • 我会说它失败了,因为你提到的两个原因。如果我将名称更改为其他名称,则会收到不存在的函数的错误日志。这意味着在它没有找到它之前,并假设它是window.close 函数。
  • 没关系!请在学习时牢记这一点,这样您就可以顺利过渡到将来编写更好的代码!我建议更多地了解JavaScript scopesUnobtrusive JavaScript。祝你好运! ;-)
  • 谢谢。 toddmoto 网站打不开
  • 如果网站无法正常工作,在 StackOverflow 上的问题 What is the scope of variables in JavaScript? 中也有大量示例。一开始可能会有点混乱,所以我会稍微提示一下:您在全局范围内定义的所有内容最终都在 window. 变量下。
猜你喜欢
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
相关资源
最近更新 更多