繁体   English   中英

如何使用JS获得新创建的选择宽度

[英]how to get NEWLY created select width with JS

我现在把头靠在墙上三个小时。 我有以下代码:

function showpctask() {
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    var xmlhttp = new XMLHttpRequest();
  } else {
    // code for IE6, IE5
    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      document.getElementById("pcactivitytask").innerHTML = xmlhttp.responseText;
    }
  };

  xmlhttp.open("GET","showpctask.php"+,true);
  xmlhttp.send();
}

会在div(id = pcactivitytask)中打开一个php文件。 该PHP文件建立一个“选择”

我在这里也有此功能:

function setpctaskwidth() {
  var maxtaskwidth = 0;
  $("div .pcactivitytask").each(function(){
    c_width = parseInt($(this).width());
    if (c_width > maxtaskwidth) {
      maxtaskwidth = c_width;
    }
  });

  alert (maxtaskwidth);
}

这将显示“ pcactivitytask”类的所有元素的最大宽度。 是的,由上一个脚本创建的选择具有该类。 如果我同时调用这两个函数,它将不包括新创建的select .....的宽度。我需要再次运行它“ manuall”。 我需要我的脚本“ onclick”都建立新的选择,并在第二个脚本中找到最大宽度。 谢谢。

XMLhttprequest异步工作,这意味着它不会按顺序发生。

这就是为什么您具有xmlhttp.onreadystatechange回调函数的原因,该函数仅在请求完成后才运行

您没有指定如何调用这两个函数,但是我希望看到在onreadystatechange函数内部对setpctaskwidth()onreadystatechange是这样的:

xmlhttp.onreadystatechange = function() {
   if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      document.getElementById("pcactivitytask").innerHTML =  xmlhttp.responseText;
      setpctaskwidth();
   }
 };

请注意,如果响应中包含页面中不存在的图像或其他外部资源(字体等),则您得到的尺寸可能会与实际的最终尺寸不同(它将在加载图像之前测量尺寸)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM