javascript - 更改 div 功能的大小不起作用

标签 javascript jquery html function onclick

我有一个函数,可以在单击 div 时改变它的大小。现在我必须在 html 页面中编写 onclick 命令,但我希望它位于 extern .js 文件中。

现在是 html 格式:

 <div id="box1" class="kaesten" onclick="changeSize('box1')"> Title 1 </div>

我想要什么:

<div id="box1" class="kaesten" > Title 1 </div>

在 jquery 中尝试了一些东西,但没有成功:

function changeSize(id) {
  var elem = document.getElementById(id);
  var currentAbsoluteElem = document.getElementById('dummy');
  var text = elem.innerHTML;
  currentAbsoluteElem.innerHTML = text;
  currentAbsoluteElem.setAttribute('style', 'display:block');
  /*Extra styling neeed  to be done here*/

}

var elems = document.getElementsByClassName('kaesten');
for (var i = 0; i < elems.length; i++) {
  elems[i].onclick = function() {
    changeSize(this.id);
  }
}

var absoluteCl = document.getElementsByClassName('absoluteclass');
absoluteCl[0].onclick = function() {
  console.log(document.getElementsByClassName('absoluteclass'))
  document.getElementsByClassName('absoluteclass')[0].setAttribute('style', 'display:none');
}
$(document).ready(function() {

$('.kaesten').click(function() {
    changeSize($(this).attr('id'));
});
});
.kaesten {
  width: 240px;
  height: 300px;
  background-color: darkgrey;
  background-position: center;
  background-repeat: no-repeat;
  text-shadow: 0px 0px 3px #000;
  border: 5px solid #F0F8ff;
  vertical-align: top;
  text-shadow: 3px 3px 4px #777;
  float: left;
  margin-left: 30px;
}

.absoluteclass {
  position: absolute;
  background-color: darkgrey;
  width: 600px;
  height: 600px;
  left: calc(30%);
  display: none;
}
<div id="box1" class="kaesten">title1</div>
<div id="box2" class="kaesten">title2</div>
<div id="box3" class="kaesten">title3</div>
<div id="box4" class="kaesten">title4</div>
<div id="dummy" class="absoluteclass"></div>

我知道它在 fiddle 中可以工作,但我不知道为什么如果不在 div 中编写函数,它就不能在我的主页上工作。

最佳答案

我猜问题是你试图在 DOM 实际渲染并准备好之前分配 onclick 事件处理程序。我的建议是将“初始化代码”包装在 $(document).ready() 方法中。如下:

$(document).ready(function() {
    // Apply the on click event handlers here, using jQuery or not
    // For instance:
    $('.kaesten').click(function() {
        changeSize($(this).attr('id'));
    });
});

关于javascript - 更改 div 功能的大小不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34787515/

相关文章:

javascript - 无法管理 Reactjs 上未填写的字段

javascript - HTMLCollection 的长度不起作用

python - 只从 HTML 文件中获取脚本

javascript - ul float 左列表上的边框底部问题,​​具有打开框功能

javascript - 在高度小于另一个 div 时显示 div 中的 li 元素

javascript - TypeError non_object_property_load 是什么意思?

jquery - 延迟 5 秒后用文本替换图像

javascript - 表单无法提交,未捕获类型错误 : Illegal invocation

javascript - 使用 MobX 将输入绑定(bind)到 React Dumb 组件内的变量

javascript - 如何将 <td> 标签内的图像位置设置为左上角,而文本位于左下角