如何从 Go WebAssembly 访问 DOM 元素属性?



我正在尝试从 https://github.com/golang/go/wiki/WebAssembly 扩展"Hello WebAssembly"示例。如前所述,该示例只是将消息打印到控制台。我想使用syscall/js添加一些代码来替换 body 元素内容。

以下尝试无法构建:

package main
import (
"fmt"
"syscall/js"
)
func main() {
fmt.Println("Hello, WebAssembly!") // original example
// I added
doc := js.Global().Get("document")
body := doc.Call("getElementById", "thebody")
body.innerHTML = "Dynamic Content"
}

当我尝试用$ env GOOS=js GOARCH=wasm go build -o main.wasm构建时 我得到 : ./wasm.go:14:6: body.innerHTML undefined (type js.Value has no field or method innerHTML)

当您考虑它时,这并不奇怪,但是我在 https://godoc.org/syscall/js 文档中没有看到解释如何获取和设置元素属性的示例。

要获取某个 JavaScript 对象的任何属性的值,请使用Value.Get()方法(当您通过调用js.Global().Get("document")访问文档对象时,您实际上已经使用了它(。同样,要设置属性的值,请使用Value.Set()

要获取/设置其值的属性的名称只是一个 Gostring值,"innerHTML"在您的情况下。要设置的值可以是许多 Go 值(例如string、整数、浮点数、bool、切片、映射等(,js.ValueOf()函数用于获取最终将设置的js.Value()。在您的情况下,您可以简单地使用 Gostring"Dynamic Content"

doc := js.Global().Get("document")
body := doc.Call("getElementById", "thebody")
body.Set("innerHTML", "Dynamic Content")

相关内容

  • 没有找到相关文章

最新更新