標籤:src 案頭 一個 demo 刪除 highlight tun ref 介面
我們可以通過go-sciter給我們提供的方法,方便的對html,css編寫的UI介面進行增刪改查。
demo3.go代碼如下:
package main;import ("github.com/sciter-sdk/go-sciter""github.com/sciter-sdk/go-sciter/window""log""fmt")//一些基礎操作func base(root *sciter.Element) {//通過ID選擇元素ul, _ := root.SelectById("list");//擷取元素的文本text, _ := ul.Text();fmt.Println("text:", text);//擷取元素的html//參數為真,則返回元素外部html//參數為假,則返回元素內部htmltext, _ = ul.Html(false);fmt.Println("html:", text);//擷取子項目個數n, _ := ul.ChildrenCount();fmt.Println(n);}//動態添加元素func addElement(root *sciter.Element) {//建立一個元素add, _ := sciter.CreateElement("li", "444");//設定元素的屬性add.SetAttr("data", "add");//通過標籤和ID來選擇元素,類似jqueryul, _ := root.SelectFirst("ul#list");//插入元素,下標從0開始err := ul.Insert(add, 3);if err != nil {log.Fatal("添加元素失敗");}add2, _ := sciter.CreateElement("li", "");err2 := ul.Insert(add2, 4);//注意這裡,元素先insert後再去設定html才有效//設定添加元素的htmladd2.SetHtml("<a href=‘http://www.baidu.com‘>555</a>", sciter.SIH_REPLACE_CONTENT);if err2 != nil {log.Fatal("添加元素失敗");}}//刪除元素func delElement(root *sciter.Element) {ul, _ := root.SelectFirst("ul#list");//擷取第一個子項目,下標從0開始li, _ := ul.NthChild(0);//刪除元素li.Delete();//我們也可以用css選取器直接選擇要刪除的元素//注意css裡面的nth-child(n)下標從1開始li2, _ := root.SelectFirst("ul#list>li:nth-child(2)");//刪除元素li2.Delete();}//修改元素func updElement(root *sciter.Element) {li, _ := root.SelectFirst("ul#list>li:nth-child(1)");//給元素設定樣式li.SetStyle("color", "#f00");//給元素設定html//參數一:html內容//參數二:html放在哪裡,SIH_REPLACE_CONTENT表示替換舊內容li.SetHtml("<a href=‘http://www.baidu.com‘>baidu.com</a>", sciter.SIH_REPLACE_CONTENT);//在最後面追加內容li.SetHtml("哈哈", sciter.SIH_APPEND_AFTER_LAST);//設定元素屬性li.SetAttr("test", "test");li2, _ := root.SelectFirst("ul#list>li:nth-child(2)");//設定文本li2.SetText("我改我改");}//尋找元素func selElement(root *sciter.Element) {//通過css選取器選擇元素,會返回*Element的sliceroot.Select("ul#list>li");//通過選取器返回第一個元素//也是調用的Select,不過只返回第一個元素root.SelectFirst("ul#list>li");//通過元素IDroot.SelectById("list");//選擇父元素//參數二:表示深度root.SelectParent("li", 1);//返回選取器匹配唯一子項目,如果沒有或匹配多個,會引發Panicroot.SelectUnique("ul#list>li:nth-child(1)");}func main() {//建立一個新視窗//這裡參數一和參數二都使用的預設值//DefaultWindowCreateFlag = SW_TITLEBAR | SW_RESIZEABLE | SW_CONTROLS | SW_MAIN | SW_ENABLE_DEBUG//DefaultRect = &Rect{0, 0, 300, 400}w, err := window.New(sciter.DefaultWindowCreateFlag, sciter.DefaultRect);if err != nil {log.Fatal(err);}//設定標題w.SetTitle("文本html");html := `<html><body><ul id="list" name="list"><li>111</li><li>222</li><li>333</li></ul></body></html>`;//載入html,從一個字串變數中w.LoadHtml(html, "");//視窗擷取根項目,這裡應該是htmlroot, _ := w.GetRootElement();//這裡把一些操作單獨寫成函數方便查看base(root);addElement(root);delElement(root);updElement(root);selElement(root);//顯示視窗w.Show();//運行視窗,進入訊息迴圈w.Run();}
go語言使用go-sciter建立案頭應用(二) ui元素尋找,增加,刪除,修改