簡體   English   中英

在頁面加載時執行javascript函數

[英]executing javascript function on page load

現在,我有一個觸發onclick的javascript函數。 但是,我希望在加載DOM時觸發相同的功能。 但是,在代碼工作之后,我不想在視圖中間放置“script”標記。 這里不能選擇從body標簽調用函數。

<script>document.addEventListener("DOMContentLoaded",function(){extractions.RefreshCheck(@check.ID)});</script>

我要實現此目的的代碼片段:

@foreach (var check in Model.FailedChecks)
{
   <li class="@( check.IsOK ? Html.Raw("bg-success") : Html.Raw("bg-danger") ) " cid="@check.ID">
    @Html.ActionLink(check.Display, "XList", "XList", new { filter = check.GetQuery(), Layout = check.Layout }, new { target = "_blank" }); 
    <span class="glyphicon glyphicon-refresh" onclick="extractions.RefreshCheck(@check.ID);" onload="initAutoRefresh"></span>

    @*<script>document.addEventListener("DOMContentLoaded",function(){extractions.RefreshCheck(@check.ID)});</script>*@
  </li>
}

上面的代碼可以工作,但我不希望在我的視圖中使用該腳本標記。 所以我嘗試使用'onload'ventlistner在我的javascript文件中添加以下代碼,但它不起作用。 我認為這是問題所在。

@foreach (var check in Model.FailedChecks)
{
   <li class="@( check.IsOK ? Html.Raw("bg-success") : Html.Raw("bg-danger") ) " cid="@check.ID">
    @Html.ActionLink(check.Display, "XList", "XList", new { filter = check.GetQuery(), Layout = check.Layout }, new { target = "_blank" }); 
    <span class="glyphicon glyphicon-refresh" onclick="extractions.RefreshCheck(@check.ID);" onload="extractions.InitAutoRefresh()"></span>

  </li>
}

我的InitAutoRefresh函數:

var extractions= {
    InitAutoRefresh: function () {
    if (document.readyState === 'complete') {
        RefreshCheck();
        console.log("function already loaded in DOM")
    } else {
        document.addEventListener('DOMContentLoaded', function () {
            RefreshCheck();
            console.log("function loaded in dom");
        });
    }

  },
RefreshCheck: function(intCheckId){
    $('li[cid=' + intCheckId + ']').addClass('bold');
    $.get(window.location + '/Home/UpdateIntegritycheck?checkId=' + intCheckId, function(data){
        $('li[cid='+intCheckId+']').replaceWith(data);
    });
  }
}

函數RefreshCheck在單擊時工作正常(即它更新記錄)。 我很樂意收到您的反饋意見。 謝謝。

試試這段代碼:

@section scripts{
    <script>document.addEventListener("DOMContentLoaded", function () { xtractions.RefreshCheck(id) });</script>
}

如果您使用的是jquery,那么您可以使用

$(document).ready(function () { 
  your code here
});

一種方法是在html標簽上定義自定義屬性,您可以根據標簽值在其上觸發條件。 示例:

 <span data-click-on-dom-ready="true" onclick="extractions.RefreshCheck(@check.ID);" ></span>

然后遠離你的局部視圖,你可以把以下內容:

$(document).ready(function () { 
  $("[data-click-on-dom-ready='true']").trigger('click');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM