iT邦幫忙

0

怎樣可以取回結果?要用什麼方法才可以知道結果?getElement by ID?

  • 分享至 

  • xImage
Public Class Index
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        LoadMemeber()
    End Sub

    Protected Sub LoadMemeber()
        Dim Member() As String
        Member = {"Peter", "John", "Linda", "Johnson", "David", "Jack", "Victor", "Tony", "Susan", "Suki"}
        ltTable1.Text = ""
        For I = 0 To Member.Count() - 1
            ltTable1.Text += "<li><H1>" & Member(I).ToString & "</H1></li>"
        Next
    End Sub
End Class
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Index.aspx.vb" Inherits="DrawLots_vb.Index" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="UTF-8" />
  <title>Lucky Draw</title>
  <link rel="stylesheet" href="./style.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
</head>
<body>
    <form id="form1" runat="server">
        <ul id='slideshow'>
            <asp:Literal ID="ltTable1" runat="server"></asp:Literal>  
        </ul>
    </form>
    <button id='again'>Again :-)</button>
<!-- partial -->
  <script src='//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
  <script  src="./script.js"></script>
</body>
</html>
看更多先前的討論...收起先前的討論...
嘛~~~~
感覺你將後端語言跟前端語言混在一起了。
small IT iT邦新手 5 級 ‧ 2024-04-29 13:06:33 檢舉
因為不太懂寫WEB,所以不知道怎樣可以將資料傳回
froce iT邦大師 1 級 ‧ 2024-04-29 14:33:56 檢舉
說真的,你這code丟出來跟沒丟一樣,根本不知道你要幹嘛...

1. getElementById是js的,是前端語言。
2. 基本上,web的傳遞資料方式是單向的,使用者在前端取得資料,打到後端,後端處理好吐回,轉換回html/json等text base的資料送回前端,前端再做處理。
small IT iT邦新手 5 級 ‧ 2024-04-29 16:05:18 檢舉
Front end 什麼都沒有,只有利用JS,去做RANDOM AND ANIMATION.
Backend 就是加入人員,本來是從DB拿出來,再去做抽獎,但抽到出來,拿不回結果
SunM0on iT邦新手 4 級 ‧ 2024-04-29 17:42:02 檢舉
混在一起是正常的,asp就這樣,處理邏輯就是渲染後丟到前端,理論上你的code是沒問題的,但我建議你不要浪費時間在過時的技術上
small IT iT邦新手 5 級 ‧ 2024-04-30 10:10:54 檢舉
因為現有環境不能升級.....
基本上~維護舊程式碼~公司不可能讓你有時間~
重新打掉改新技術上面~別妄想了🤷‍♂️
另外一提ASP MVC 或 Core 依舊 前後端 程式碼混在一起~
沒有各自獨立一說~他們只是放在不同檔案而已~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
SunM0on
iT邦新手 4 級 ‧ 2024-04-29 17:35:38

asp?
話先說在前面,很舊的專案了,錢不多的話,快跑

好像很多人都覺得混在一起了,不過aspx確實就是這樣寫的
當年趨勢就是php、asp這樣的前後端不分離

我看了看,感覺你的程式應該是能正常運作的?
不然你把<script src="./script.js"></script>拿掉試試?
不知道這邊你載入了甚麼

2
純真的人
iT邦大師 1 級 ‧ 2024-04-30 10:58:00

那個若要取回 slideshow ID的 ui標籤 li裡面的資料~
你應該要改成 select 下拉表單方式 form才可以記錄 是選擇誰~才可以回傳~

<ul id='slideshow'>
    <li><H1>Peter</H1></li>
    <li><H1>John</H1></li>
    <li><H1>Linda</H1></li>
<ui>

改成 select 標籤

<select name="slideshow">
    <option value="">請選擇</option>
    <option value="Peter">Peter</option>
    <option value="John">John</option>
    <option value="Linda">Linda</option>
</select>

再用JS監聽again按鈕送出表單回傳~

大概這樣改吧@@a...
後端..

    Protected Sub LoadMemeber()
        Dim Member() As String
        Member = {"Peter", "John", "Linda", "Johnson", "David", "Jack", "Victor", "Tony", "Susan", "Suki"}
        ltTable1.Text = ""
        For I = 0 To Member.Count() - 1
            ltTable1.Text += "<option value=""" & Member(I).ToString & """ >" & Member(I).ToString & "</option>"
        Next
    End Sub

前端..

    <form id="form1" runat="server">
        <select id='slideshow' name='slideshow'>
            <asp:Literal ID="ltTable1" runat="server"></asp:Literal>  
        </select>
    </form>

前端JS..

<script>
document.getElementById("again").addEventListener('click', function () {
   document.getElementById("form1").submit();
});
</script>

這樣就能丟值給後端了~只是後端看你怎麼接吧@@...

看更多先前的回應...收起先前的回應...
small IT iT邦新手 5 級 ‧ 2024-04-30 12:24:59 檢舉

這樣做就沒有了動畫抽獎的畫面了

small IT iT邦新手 5 級 ‧ 2024-04-30 12:25:33 檢舉

參考~我把值放到文字欄位~你可以用隱藏欄位紀錄後送出~

HTML

<ul id='slideshow'>
  <li txt="Mak Ka Veng"><img src='https://via.placeholder.com/500x200&text=Mak Ka Veng' alt=''></li>
  <li txt="Ho Kit Zi"><img src='https://via.placeholder.com/500x200&text=Ho Kit Zi' alt=''></li>
  <li txt="Aaden Chan"><img src='https://via.placeholder.com/500x200&text=Aaden Chan' alt=''></li>
  <li txt="Kin Ho"><img src='https://via.placeholder.com/500x200&text=Kin Ho' alt=''></li>
  <li txt="Johnson Lam"><img src='https://via.placeholder.com/500x200&text=Johnson Lam' alt=''></li>
  <li txt="Simon Leong"><img src='https://via.placeholder.com/500x200&text=Simon Leong' alt=''></li>
  <li txt="Veng Mak"><img src='https://via.placeholder.com/500x200&text=Veng Mak' alt=''></li>
  <li txt="Victor Vong"><img src='https://via.placeholder.com/500x200&text=Victor Vong' alt=''></li>
</ul>
<input type="text" id="Str" name="Str">
<button id='again'>Again :-)</button>

CSS

/* reset */
body, ul, li, p, h1, h2, h3, h4 {
  margin: 0;
  padding: 0;
}

/* slideshow */

ul {
  width: 400px;
  height: 200px;
  
  margin: 0 auto;
  
  position: relative;
  
  list-style: none;
  
  -webkit-perspective: 700px;
  perspective: 700px;
}

li {
  position: absolute;  
  
  transform-origin: 0 100%;
}
li.current {
  transition: all 0.4s ease-out;
  opacity: 1.0;
}
li.in {
  opacity: 0.0;
  transform: rotate3d(1, 0, 0, -90deg);
}
li.out {
  transition: all 0.4s ease-out;
  opacity: 0.0;
  transform: rotate3d(1, 0, 0, 90deg);
}


JS

var slides = $('#slideshow').find('li');


// move all to the right.
slides.addClass('in');

// move first one to current.
$(slides[0]).removeClass().addClass('current');

var currentIndex = 0;
  
var minimumCount = 20;
var maximumCount = 200;
var count = 0;

function nextSlide() {
  $('#again').attr('disabled','disabled');
  
  currentIndex += 1;
  if (currentIndex >= slides.length) {
    currentIndex = 0;
  }
  
  // move any previous 'out' slide to the right side.
  $('.out').removeClass().addClass('in');
  
  // move current to left.
  $('.current').removeClass().addClass('out');
  
  // move next one to current.
  $(slides[currentIndex]).removeClass().addClass('current');
  
  
  count += 1;
  if (count > maximumCount || (count > minimumCount && Math.random()>0.3) ) {
    clearInterval(interval);
    var Str = document.getElementById("Str");
    Str.value = slides[currentIndex].getAttribute("txt");
    $('#again').removeAttr('disabled');
  }
}

var interval = setInterval(nextSlide, 120);


$('#again').click(function(){  
  count = 0;
  interval = setInterval(nextSlide, 120);
});

https://ithelp.ithome.com.tw/upload/images/20240430/20061369k2pyozhvLD.png

small IT iT邦新手 5 級 ‧ 2024-04-30 14:38:02 檢舉

謝謝師兄的熱心幫助.

froce iT邦大師 1 級 ‧ 2024-04-30 14:44:59 檢舉

他要表現特效的話一定得用ajax去做post,要不然畫面一刷新什麼特效都是白費功夫,我是覺得用不用select沒啥關係啦,都得寫js了那應該沒啥差別。

另外抽獎在設計的話前端通常只負責跑特效而已,post大概只送人員驗證的資料,真正抽的話是在後端抽,前端收到等特效跑完後固定在得獎人而已。

所以其實沒什麼會用到 getElementById 的問題,抽獎結果本來就該在後端產生了。

恩~通常特效都是後端帶結果到前端~
前端不可以產生結果後才送去後端(作弊)

small IT iT邦新手 5 級 ‧ 2024-04-30 15:40:31 檢舉

但我不懂在後端做,再顯示出來,唯有用現成的SAMPLE CODE

厚厚 iT邦新手 1 級 ‧ 2024-04-30 16:40:28 檢舉

推推,這篇正解,這個應該給正解了吧
我懂有時候真的不是不想改,而是功力不足無法修

參考反向 後端 結果 的資料 丟給前端 (後端的資料庫要先記錄好~)

HTML

<ul id='slideshow'>
  <li txt="Mak Ka Veng"><img src='https://via.placeholder.com/500x200&text=Mak Ka Veng' alt=''></li>
  <li txt="Ho Kit Zi"><img src='https://via.placeholder.com/500x200&text=Ho Kit Zi' alt=''></li>
  <li txt="Aaden Chan"><img src='https://via.placeholder.com/500x200&text=Aaden Chan' alt=''></li>
  <li txt="Kin Ho"><img src='https://via.placeholder.com/500x200&text=Kin Ho' alt=''></li>
  <li txt="Johnson Lam"><img src='https://via.placeholder.com/500x200&text=Johnson Lam' alt=''></li>
  <li txt="Simon Leong"><img src='https://via.placeholder.com/500x200&text=Simon Leong' alt=''></li>
  <li txt="Veng Mak"><img src='https://via.placeholder.com/500x200&text=Veng Mak' alt=''></li>
  <li txt="Victor Vong"><img src='https://via.placeholder.com/500x200&text=Victor Vong' alt=''></li>
</ul>
<input type="hidden" id="str" value="Simon Leong" />
<button id='again'>Again :-)</button>

CSS

/* reset */
body, ul, li, p, h1, h2, h3, h4 {
  margin: 0;
  padding: 0;
}

/* slideshow */

ul {
  width: 400px;
  height: 200px;
  
  margin: 0 auto;
  
  position: relative;
  
  list-style: none;
  
  -webkit-perspective: 700px;
  perspective: 700px;
}

li {
  position: absolute;  
  
  transform-origin: 0 100%;
}
li.current {
  transition: all 0.4s ease-out;
  opacity: 1.0;
}
li.in {
  opacity: 0.0;
  transform: rotate3d(1, 0, 0, -90deg);
}
li.out {
  transition: all 0.4s ease-out;
  opacity: 0.0;
  transform: rotate3d(1, 0, 0, 90deg);
}


JS

var slides = $('#slideshow').find('li');


// move all to the right.
slides.addClass('in');

// move first one to current.
$(slides[0]).removeClass().addClass('current');

var currentIndex = 0;
  
var minimumCount = 20;
var maximumCount = 200;
var count = 0;

function nextSlide() {
  $('#again').attr('disabled','disabled');
  
  currentIndex += 1;
  if (currentIndex >= slides.length) {
    currentIndex = 0;
  }
  
  // move any previous 'out' slide to the right side.
  $('.out').removeClass().addClass('in');
  
  // move current to left.
  $('.current').removeClass().addClass('out');
  
  // move next one to current.
  $(slides[currentIndex]).removeClass().addClass('current');
  
  
  count += 1;
  if (count > maximumCount || (count > minimumCount && Math.random()>0.3) ) {
    clearInterval(interval);
    
    for(var i=0 ; i < slides.length ; i++){
       if($("#str").val() == slides[i].getAttribute("txt")){
         currentIndex=i;
         $(slides[currentIndex]).removeClass().addClass('current');
         break;
       }
    }
    
    
    $('#again').removeAttr('disabled');
  }
}

var interval = setInterval(nextSlide, 120);


$('#again').click(function(){  
  count = 0;
  interval = setInterval(nextSlide, 120);
});

https://ithelp.ithome.com.tw/upload/images/20240430/20061369c1kIfbTyKq.png

我要發表回答

立即登入回答