【问题标题】:How to get a clicked element's text content, with Dart?如何使用 Dart 获取点击元素的文本内容?
【发布时间】:2013-02-18 18:05:40
【问题描述】:

我正在使用 dart 开发一个应用程序,我想获取点击元素的值。即:

HTML:

<div id="blah">Value!!</div>

飞镖:

void main(){
    query("#blah").onClick.listen(showValue);
}

void showValue(Event e){
   //Get #blah's innerHtml based on the Event(Something like e.target.innerHtml or e.target.value)
}

有人吗?我知道如何在 JS 中做到这一点,但我想知道是否有办法在 DART 中做到这一点!

编辑

感谢大家,我会尽量说得更清楚一点。我有一个循环动态生成 9 个元素并将它们添加到容器中。

代码:

var j = 0;
  var optionsSquare = query("#optionsPanel");
    while(j < 9){
      DivElement minorSquare = new DivElement();

      var minorSquareHeight = optionsSquare.clientHeight/3;
      var minorSquareWidth = optionsSquare.clientWidth/3;

      minorSquare
       ..attributes = {"class": "miniSugg"}
       ..style.width = (minorSquareWidth.round()-2).toString().concat("px")
       ..style.height = (minorSquareHeight.round()-2).toString().concat("px")
       ..style.float = "left"
       ..style.border = "1px solid"
       ..innerHtml = (j+1).toString();
       ..onClick.listen(showOptionsSquare);

      optionsSquare.children.add(minorSquare);
      j++;
    }

如果我尝试使用@Pandian 的方式,它可以工作,但我只能得到循环内最后一个元素的值。我想要的是以某种方式追踪点击的元素并获取它的值!

编辑 2

各位,刚刚解决了!

如果有人需要这些信息,我会把这里的代码作为回购:

void showOptionsSquare(Event e){
  window.location.hash = "#optionsPanel";
  mainDiv.style.opacity = (0.2).toString();

  DivElement clicked = e.target;
  window.alert(clicked.innerHtml);
}

[]的

【问题讨论】:

标签: dart dart-webui


【解决方案1】:

使用您可以编写的示例代码

print(e.target.innerHtml);

在您的 showValue 函数内部,它会起作用。你得到一个错误或什么?如果您担心警告,您可以向ElementDivElement 添加演员:

print((e.target as Element).innerHtml);

【讨论】:

  • 您的例外到底是怎么说的?你的另一个例子对我也很好。我正在使用最先进的编辑器版本,但我认为这没有什么不同。
  • 堆栈跟踪:异常:NoSuchMethodError:找不到方法:“值”接收者:“DivElement”实例参数:[] 堆栈跟踪:#0 Object.noSuchMethod (dart:core-patch :1746:25) #1 showOptionsSquare.showOptionsSquare (127.0.0.1:3030/C:/Users/avaz/dart/sudoku_trial/web/out/…)
  • 啊,好的。因此,您尝试访问 value 而不是 innerHtml。值仅适用于输入元素。
  • 天啊,真不敢相信我让这样的事情通过大声笑非常感谢...如果您不介意,我想听听您的意见...您认为的解决方案是什么更“干净”,我的还是你的?
  • 差别不大。您正在调用 e.target.innerHtml 而我也在这样做。做任何你更舒服的事情;)。如果你想用你的 DivElement 做更多的事情,我会选择你的解决方案。
【解决方案2】:

试试下面...它会帮助你...

DivElement div;

void showValue(){
      window.alert(div.innerHTML); 
}

void main() { 
  div = query('#blah');
  div.on.click.add((Event e) => showValue());
}

【讨论】:

  • 非常感谢!不能完全按照我的意愿工作,因为我在循环中创建的元素中绑定了点击事件,所以,它只获取循环值创建的最后一个元素,但是你给了我一个很好的方向,非常感谢!
猜你喜欢
  • 2015-02-20
  • 2015-12-12
  • 2011-05-27
  • 2015-11-06
  • 2013-01-15
  • 1970-01-01
  • 2017-10-12
  • 2011-12-11
  • 1970-01-01
相关资源
最近更新 更多