【问题标题】:Check if element is in selected area of page检查元素是否在页面的选定区域中
【发布时间】:2014-01-26 00:55:43
【问题描述】:

使用 JavaScript(没有 JQuery)如何判断网页上的特定元素是否被选中?

例如,我有一个网页,我选择了网页的一部分。 “选择”是指:

  • 在网页上将开始选择的位置左键单击鼠标(并按住鼠标按钮)。
  • 将鼠标拖到所需选择区域的末端。
  • 松开鼠标按钮以完成选择。

(注意:我真的认为我不需要为“选择页面的一部分”提供这种详细程度,但很多人似乎对我的意思感到困惑)。

然后在 JavaScript 中,我想查看一些元素并识别网页所选区域内的任何元素:

function a(e){
  /** 
   *  I want to find out if element "e" is within the
   *  "Selected" area of the web-page, and take some action if it is.
   *  (not to be confused with "checked" or "unchecked" for "checkbox"
   *  elements, or "selected" for "option" elements).
  **/ 
}

var x,k,f,j,r;
x=document.forms;
for(k=0;k<x.length;++k){
   f=x[k];
   for(j=0;j<f.length;++j){
      r=(f[j].type.toLowerCase());
      if(r=="checkbox")
         a(f[j]);
   }
}

【问题讨论】:

  • 很棒的精简代码。
  • 您的问题不清楚您所说的选中是什么意思?您的意思是单击一个复选框并查看它是否被“选中”又名“选中”,还是您实际上是指在页面上拖动鼠标来选择文本/元素?你的最终目标是什么,请使用真正的变量名,它们是缩小器是有原因的。
  • 阅读起来并不难。遍历所有表单并查看每个元素以查看它是否是一个复选框。 OP 然后想查看它是否在用户在页面上所做的选择中。
  • @epascarello - 我的意思是“网页的选定区域”。我在问题中添加了更多细节以澄清这一点。另外,"...请使用真正的变量名...":示例代码已没有 “缩小”。我使用了 "real" 变量名。它们的命名最少是因为:1)这部分代码对实际问题并不直接重要,2)我将此代码放入允许有限数量字符的书签中。
  • 混淆了人们的是包含不是很相关的代码,包括复选框和选择的词

标签: javascript html dom


【解决方案1】:

所以通过查看元素的checked属性来检查它是否被“选中”。

console.log(e.checked);

所以作为一个 if 语句:

if (e.checked) {
   //do action checked
} else {
  //do action unchecked
}

【讨论】:

  • 已选中 - 页面的一部分已选中!
  • @mplungjan 所以你在一个不清楚的问题上对每个人都投了反对票。太棒了,太棒了。
  • 糟糕的例子,但问题很明确。我评论了每一个不赞成票,而不是像我在这里收到的大约 50% 的反对票......只是希望人们能给予更多的关注,如果答案是固定的,我可以恢复我的反对票
【解决方案2】:

这里有一个 DOM 属性 .ckecked 用于检查复选框是否被选中。

如果选中/选中复选框,则返回 true,如果未选中/选中,则返回 false

【讨论】:

  • 查看其他答案和我的 cmets。他想知道某个对象是否在 document.selection 中。至少正确拼写属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
相关资源
最近更新 更多